spark-sql create table using orc
在分区表中使用不同建表方式,hive和spark-sql中insert overwrite data现象不同。
1.问题出现过程
1)spark-sql建表
CREATE TABLE t_using
(`user_no` STRING, `tt_slotid_req` STRING, `ks_slotid_req` STRING
,`model` STRING
, `follow_time` STRING, `bind_time` STRING, `reg_slotid` STRING
, `geo_show` STRING, `ip_show` STRING, `model_show` STRING, `tt_bid_mean` STRING, `pday` STRING
)
USING orc
OPTIONS (
`serialization.format` '1'
)
PARTITIONED BY (pday);
2)spark-sql插入数据
insert overwrite table t_using partition(pday)
select * from t0
where pday>='20220327' ;
3)spark-sql再次插入数据
insert overwrite table t_using partition(pday)
select * from t0
where pday='20220325' ;
现象:t_using表中pday>='20220327'被删除,只存在最近一次插入的数据pday='20220325'
4) hive中插入数据
insert overwrite table t_using partition(pday)
select * from t0
where pday='20220326' ;
现象:t_using表中pday='20220325'未被删除,并新增分区pday='20220326'
5) hive建表
CREATE TABLE t_using
(`user_no` STRING, `tt_slotid_req` STRING, `ks_slotid_req` STRING
,`model` STRING
, `follow_time` STRING, `bind_time` STRING, `reg_slotid` STRING
, `geo_show` STRING, `ip_show` STRING, `model_show` STRING, `tt_bid_mean` STRING, `pday` STRING
)
USING orc
OPTIONS (
`serialization.format` '1'
)
PARTITIONED BY (pday);
该方式在hive中并不能建表;
6) 常见建表语句
CREATE TABLE t_using
(`user_no` STRING, `tt_slotid_req` STRING, `ks_slotid_req` STRING
,`model` STRING
, `follow_time` STRING, `bind_time` STRING, `reg_slotid` STRING
, `geo_show` STRING, `ip_show` STRING, `model_show` STRING, `tt_bid_mean` STRING, `pday` STRING
)
PARTITIONED BY (pday)
stored as orc;;
hive和spark-sql均正常建表,且插入数据正常;
7) 总结
问题总结:在using orc建表(或其他using data source方式)下,hive和spark-sql insert overwrite table数据现象不一样。
2.问题解决
查询了很久,发现这个其实是spark-sql的语法,hive并没有:
INSERT OVERWRITE - Spark 3.0.0-preview Documentation
要想分区不被删除,需要在插入数据时指定插入的分区:
insert overwrite table t_using partition(pday='20220326')
select * from t0
where pday='20220326' ;
3.补充
另外spark-sql建表使用USING xxx建表的我也贴一下:
CREATE DATASOURCE TABLE - Spark 3.2.1 Documentation
spark-sql create table using orc相关推荐
- SQL CREATE TABLE 语句(转)
CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...
- mysql create很多table,SQL CREATE TABLE 语句
原标题:SQL CREATE TABLE 语句 SQL CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. 表由行和列组成,每个表都必须有个表名. SQL CREAT ...
- SQL CREATE TABLE 语句/数据库建表
转自:SQL CREATE TABLE 语句 CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表 ...
- SQL CREATE TABLE
CREATE TABLE 语句用于创建数据库中的表. 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE table_name ( column_ ...
- 如何使用 SQL CREATE TABLE 创建新表
文章目录 一.创建表 1.1 表创建基础 1.2 使用 NULL 值 1.3 指定默认值 二.更新表 三.删除表 四.重命名表 五.小结 本文介绍如何使用 SQL CREATE TABLE 创建新表, ...
- SQL—— Create table as select 与 使用select查询结果创建新表
Create table as select,有以下三种方式: create table table1 as select * from table2 where 1=2; 创建一个表结构与table ...
- Exception in thread “main“ org.apache.spark.sql.AnalysisException: Table or view not found: user; li
出现次错误的原因是创建了全局 view,改成局部 view,去掉 Global
- 「Spark从入门到精通系列」4.Spark SQL和DataFrames:内置数据源简介
来源 | Learning Spark Lightning-Fast Data Analytics,Second Edition 作者 | Damji,et al. 翻译 | 吴邪 大数据4年从业经 ...
- Spark SQL 核心编程
文章目录 Spark SQL 核心编程 1.新的起点 2.SQL 语法 1) 读取 json 文件创建 DataFrame 2) 对 DataFrame 创建一个临时表 3) 通过SQL语句实现查询全 ...
最新文章
- 深度学习已经彻底改变了制造业的质量控制,但还不够深入
- 2021牛客暑期多校训练营3 G-Yu Ling(Ling YueZheng) and Colorful Tree(cdq分治)
- Python eval 与 exec 函数区别 - Python零基础入门教程
- 码云提交时报错git 报错 fatal: unable to auto-detect email address (got 'Administrator@PC-20180504MMDH.(none)'
- react native多语言_前端福音:为什么使用 React 和 SVG 开发图形 UI 是天作之合?
- 还不会用springboot写接口?快看这里,手把手操作,一发入魂~
- 软件行业各职位英文缩写
- 计算机三级信息安全笔记(知识点)
- CAS 服务端的搭建
- finereport与OA系统集成的完全方案
- Credential Harvester Attack Method获得用户信息
- 解决vmware下虚拟机关机重启ip改变
- 北洋大时代:大师们的理想国札记-随想篇
- 手机计算机怎么玩24点游戏,计算器游戏怎么玩 新手前期玩法介绍
- 喜欢NBA的朋友快来这里看第一阶段的全明星投票结果!!!(更新到第二阶段、第三阶段)
- 国产操作系统(2)中标麒麟和银河麒麟体验QT
- COSCon‘20 Track F 区块链论坛介绍
- JS--使用第三方库解决浮点数(小数)计算不准确的问题
- 汽车零部件高低温振动环境试验服务CNAS检测报告
- Python之Scrapy爬虫(热门网站数据爬取)