<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
社群小夥伴一直期待的Hudi整合Spark SQL的PR正在積極Review中並已經快接近尾聲,Hudi整合Spark SQL預計會在下個版本正式釋出,在整合Spark SQL後,會極大方便使用者對Hudi表的DDL/DML操作,下面就來看看如何使用Spark SQL操作Hudi表。
首先需要將PR拉取到本地打包,生成SPARK_BUNDLE_JAR(hudi-spark-bundle_2.11-0.9.0-SNAPSHOT.jar)包
在設定完spark環境後可通過如下命令啟動spark-sql
spark-sql --jars $PATH_TO_SPARK_BUNDLE_JAR --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension'
由於Hudi預設upsert/insert/delete的並行度是1500,對於演示的小規模資料集可設定更小的並行度。
set hoodie.upsert.shuffle.parallelism = 1; set hoodie.insert.shuffle.parallelism = 1; set hoodie.delete.shuffle.parallelism = 1;
同時設定不同步Hudi表後設資料
set hoodie.datasource.meta.sync.enable=false;
使用如下SQL建立表
create table test_hudi_table ( id int, name string, price double, ts long, dt string ) using hudi partitioned by (dt) options ( primaryKey = 'id', type = 'mor' ) location 'file:///tmp/test_hudi_table'
說明:表型別為MOR,主鍵為id,分割區欄位為dt,合併欄位預設為ts。
建立Hudi表後檢視建立的Hudi表
show create table test_hudi_table
使用如下SQL插入一條記錄
insert into test_hudi_table select 1 as id, 'hudi' as name, 10 as price, 1000 as ts, '2021-05-05' as dt
insert完成後檢視Hudi表本地目錄結構,生成的後設資料、分割區和資料與Spark Datasource寫入均相同。
使用如下SQL查詢Hudi表資料
select * from test_hudi_table
查詢結果如下
使用如下SQL將id為1的price欄位值變更為20
update test_hudi_table set price = 20.0 where id = 1
再次查詢Hudi表資料
select * from test_hudi_table
查詢結果如下,可以看到price已經變成了20.0
檢視Hudi表的本地目錄結構如下,可以看到在update之後又生成了一個deltacommit
,同時生成了一個增量log檔案。
使用如下SQL將id=1的記錄刪除
delete from test_hudi_table where id = 1
檢視Hudi表的本地目錄結構如下,可以看到delete之後又生成了一個deltacommit
,同時生成了一個增量log檔案。
再次查詢Hudi表
select * from test_hudi_table;
查詢結果如下,可以看到已經查詢不到任何資料了,表明Hudi表中已經不存在任何記錄了。
使用如下SQL向test_hudi_table
插入資料
merge into test_hudi_table as t0 using ( select 1 as id, 'a1' as name, 10 as price, 1000 as ts, '2021-03-21' as dt ) as s0 on t0.id = s0.id when not matched and s0.id % 2 = 1 then insert *
查詢Hudi表資料
select * from test_hudi_table
查詢結果如下,可以看到Hudi表中存在一條記錄
使用如下SQL更新資料
merge into test_hudi_table as t0 using ( select 1 as id, 'a1' as name, 12 as price, 1001 as ts, '2021-03-21' as dt ) as s0 on t0.id = s0.id when matched and s0.id % 2 = 1 then update set *
查詢Hudi表
select * from test_hudi_table
查詢結果如下,可以看到Hudi表中的分割區已經更新了
使用如下SQL刪除資料
merge into test_hudi_table t0 using ( select 1 as s_id, 'a2' as s_name, 15 as s_price, 1001 as s_ts, '2021-03-21' as dt ) s0 on t0.id = s0.s_id when matched and s_ts = 1001 then delete
查詢結果如下,可以看到Hudi表中已經沒有資料了
使用如下命令刪除Hudi表
drop table test_hudi_table;
使用show tables檢視表是否存在
show tables;
可以看到已經沒有表了
通過上面範例簡單展示了通過Spark SQL Insert/Update/Delete Hudi表資料,通過SQL方式可以非常方便地操作Hudi表,降低了使用Hudi的門檻。另外Hudi整合Spark SQL工作將繼續完善語法,儘量對標Snowflake和BigQuery的語法,如插入多張表(INSERT ALL WHEN condition1 INTO t1 WHEN condition2 into t2),變更Schema以及CALL Cleaner、CALL Clustering等Hudi表服務。
以上就是Apache Hudi整合Spark SQL操作hide表的詳細內容,更多關於Apache Hudi整合Spark SQL的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45