精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊 Flink SQL增量查詢Hudi表

數據庫 其他數據庫
read.end-commit 增量查詢結束時間 不指定該參數則默認讀取到最新的記錄,該參數一般只適用于批讀,因為流讀一般的需求是查詢所有的增量數據

?官網文檔

地址:https://hudi.apache.org/cn/docs/querying_data#incremental-query

參數

  • read.start-commit 增量查詢開始時間 對于流讀,如果不指定該值,默認取最新的instantTime,也就是流讀默認從最新的instantTime開始讀(包含最新的)。對于批讀,如果不指定該參數,只指定read.end-commit,則實現時間旅行的功能,可查詢歷史記錄
  • read.end-commit 增量查詢結束時間 不指定該參數則默認讀取到最新的記錄,該參數一般只適用于批讀,因為流讀一般的需求是查詢所有的增量數據
  • read.streaming.enabled 是否流讀 默認false
  • read.streaming.check-interval  流讀的檢查時間間隔,單位秒(s),默認值60,也就是一分鐘查詢范圍 [BEGIN_INSTANTTIME,END_INSTANTTIME],既包含開始時間又包含結束時間,對于默認值可參考上面的參數說明

版本

建表造數:

  • Hudi 0.9.0
  • Spark 2.4.5

我這里建表造數使用Hudi Spark SQL 0.9.0,目的是為了模擬項目上用Java Client和Spark SQL創建的Hudi表,以驗證Hudi Flink SQL增量查詢時是否兼容舊版本的Hudi表(大家沒有這種需求的,可以使用任何方式正常造數)

查詢

  • Hudi 0.13.0-SNAPSHOT
  • Flink 1.14.3 (增量查詢)
  • Spark 3.1.2 (主要是為了使用Call Procedures命令查看commit信息)

建表造數

-- Spark SQL Hudi 0.9.0
create table hudi.test_flink_incremental (
id int,
name string,
price double,
ts long,
dt string
) using hudi
partitioned by (dt)
options (
primaryKey = 'id',
preCombineField = 'ts',
type = 'cow'
);

insert into hudi.test_flink_incremental values (1,'a1', 10, 1000, '2022-11-25');
insert into hudi.test_flink_incremental values (2,'a2', 20, 2000, '2022-11-25');
update hudi.test_flink_incremental set name='hudi2_update' where id = 2;
insert into hudi.test_flink_incremental values (3,'a3', 30, 3000, '2022-11-26');
insert into hudi.test_flink_incremental values (4,'a4', 40, 4000, '2022-12-26');

用show_commits看一下有哪些commits(這里查詢用的是Hudi的master,因為show_commits是在0.11.0版本開始支持的,也可以通過使用hadoop命令查看.hoodie文件夾下的.commit文件)

call show_commits(table => 'hudi.test_flink_incremental');
20221205152736
20221205152723
20221205152712
20221205152702
20221205152650

Flink SQL創建Hudi內存表

CREATE TABLE test_flink_incremental (
id int PRIMARY KEY NOT ENFORCED,
name VARCHAR(10),
price double,
ts bigint,
dt VARCHAR(10)
)
PARTITIONED BY (dt)
WITH (
'connector' = 'hudi',
'path' = 'hdfs://cluster1/warehouse/tablespace/managed/hive/hudi.db/test_flink_incremental'
);

建表時不指定增量查詢相關的參數,我們在查詢時動態指定,這樣比較靈活。動態指定參數方法,在查詢語句后面加上如下形式的語句

/*+ 
options(
'read.start-commit' = '20221205152723',
'read.end-commit'='20221205152736'
)
*/

批讀

Flink SQL讀Hudi有兩種模式:批讀和流讀。默認批讀,先看一下批讀的增量查詢

驗證是否包含起始時間和默認結束時間

select * from test_flink_incremental 
/*+
options(
'read.start-commit' = '20221205152723' --起始時間對應id=3的記錄
)
*/

結果包含起始時間,不指定結束時間默認讀到最新的數據

id   name     price        ts                 dt
4 a4 40.0 4000 dt=2022-12-26
3 a3 30.0 3000 dt=2022-11-26

驗證是否包含結束時間

select * from test_flink_incremental 
/*+
options(
'read.start-commit' = '20221205152712', --起始時間對應id=2的記錄
'read.end-commit'='20221205152723' --結束時間對應id=3的記錄
)
*/

結果包含結束時間

id           name        price       ts                 dt
3 a3 30.0 3000 dt=2022-11-26
2 hudi2_update 20.0 2000 dt=2022-11-25

驗證默認開始時間

這種情況是指定結束時間,但不指定開始時間,如果都不指定,則讀表所有的最新版本的記錄。

select * from test_flink_incremental 
/*+
options(
'read.end-commit'='20221205152712' --結束時間對應id=2的更新記錄
)
*/

結果:只查詢end-commit對應的記錄

id           name        price       ts                 dt
2 hudi2_update 20.0 2000 dt=2022-11-25

時間旅行(查詢歷史記錄)

驗證是否可以查詢歷史記錄,我們更新id為2的name,更新前name為a2,更新后為hudi2_update,我們驗證一下,是否可以通過FlinkSQL查詢Hudi歷史記錄,預期結果查出id=2,name=a2

select * from test_flink_incremental 
/*+
options(
'read.end-commit'='20221205152702' --結束時間對應id=2的歷史記錄
)
*/

結果:可以正確查詢歷史記錄

id           name        price       ts                 dt
2 a2 20.0 2000 dt=2022-11-25

流讀

開啟流讀的參數:

read.streaming.enabled = true

流讀不需要設置結束時間,因為一般的需求是讀所有的增量數據,我們只需要驗證開始時間就好了

驗證默認開始時間

select * from test_flink_incremental 
/*+
options(
'read.streaming.enabled'='true',
'read.streaming.check-interval' = '4'
)
*/

結果:從最新的instantTime開始增量讀取,也就是默認的read.start-commit為最新的instantTime

id   name     price        ts                 dt
4 a4 40.0 4000 dt=2022-12-26

驗證指定開始時間

select * from test_flink_incremental 
/*+
options(
'read.streaming.enabled'='true',
'read.streaming.check-interval' = '4',
'read.start-commit' = '20221205152712'
)
*/

結果:

id           name        price       ts                 dt
2 hudi2_update 20.0 2000 dt=2022-11-25
3 a3 30.0 3000 dt=2022-11-26
4 a4 40.0 4000 dt=2022-11-26

如果想第一次查詢全部的歷史數據,可以將start-commit設置的早一點,比如設置到去年:'read.start-commit' = '20211205152712'

select * from test_flink_incremental 
/*+
options(
'read.streaming.enabled'='true',
'read.streaming.check-interval' = '4',
'read.start-commit' = '20211205152712'
)
*/
id           name        price       ts                 dt
1 a1 10.0 1000 dt=2022-11-25
2 hudi2_update 20.0 2000 dt=2022-11-25
3 a3 30.0 3000 dt=2022-11-26
4 a4 40.0 4000 dt=2022-11-26

驗證流讀的連續性

驗證新的增量數據進來,是否可以持續消費Hudi增量數據,驗證數據的準確一致性,為了方便驗證,我可以使用Flink SQL增量流讀Hudi表然后Sink到MySQL表中,最后通過讀取MySQL表中的數據驗證數據的準確性

Flink SQL讀寫MySQL需要配置jar包,將flink-connector-jdbc_2.12-1.14.3.jar?放到lib?下即可,下載地址:https://repo1.maven.org/maven2/org/apache/flink/flink-connector-jdbc_2.12/1.14.3/flink-connector-jdbc_2.12-1.14.3.jar

先在MySQL中創建一張Sink表

-- MySQL
CREATE TABLE `test_sink` (
`id` int(11),
`name` text DEFAULT NULL,
`price` int(11),
`ts` int(11),
`dt` text DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Flink中創建對應的sink表

create table test_sink (
id int,
name string,
price double,
ts bigint,
dt string
) with (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://192.468.44.128:3306/hudi?useSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8',
'username' = 'root',
'password' = 'root-123',
'table-name' = 'test_sink',
'sink.buffer-flush.max-rows' = '1'
);

然后流式增量讀取Hudi表Sink Mysql

insert into test_sink
select * from test_flink_incremental
/*+
options(
'read.streaming.enabled'='true',
'read.streaming.check-interval' = '4',
'read.start-commit' = '20221205152712'
)
*/

這樣會起一個長任務,一直處于running狀態,我們可以在yarn-session界面上驗證這一點

圖片

然后先在MySQL中驗證一下歷史數據的準確性

圖片

再利用Spark SQL往source表插入兩條數據

-- Spark SQL
insert into hudi.test_flink_incremental values (5,'a5', 50, 5000, '2022-12-07');
insert into hudi.test_flink_incremental values (6,'a6', 60, 6000, '2022-12-07');

我們增量讀取的間隔設置的4s,成功插入數據等待4s后,再在MySQL表中驗證一下數據

圖片

發現新增的數據已經成功Sink到MySQL中了,并且數據沒有重復

最后驗證一下更新的增量數據,Spark SQL更新Hudi source表

-- Spark SQL
update hudi.test_flink_incremental set name='hudi5_update' where id = 5;

繼續驗證結果

圖片

結果是更新的增量數據也會insert到MySQL中的sink表,但是不會更新原來的數據

那如果想實現更新的效果呢?我們需要在MySQL和Flink的sink表中加上主鍵字段,兩者缺一不可,如下:

-- MySQL
CREATE TABLE `test_sink` (
`id` int(11),
`name` text DEFAULT NULL,
`price` int(11),
`ts` int(11),
`dt` text DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Flink SQL
create table test_sink (
id int PRIMARY KEY NOT ENFORCED,
name string,
price double,
ts bigint,
dt string
) with (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://192.468.44.128:3306/hudi?useSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8',
'username' = 'root',
'password' = 'root-123',
'table-name' = 'test_sink',
'sink.buffer-flush.max-rows' = '1'
);

將剛才起的長任務關掉,重新執行剛才的insert語句,先跑一下歷史數據,最后再驗證一下增量效果

-- Spark SQL
update hudi.test_flink_incremental set name='hudi6_update' where id = 6;
insert into hudi.test_flink_incremental values (7,'a7', 70, 7000, '2022-12-07');

可以看到,達到了預期效果,對于id=6的執行更新操作,對于id=7的執行插入操作。

圖片

責任編輯:武曉燕 來源: 倫少的博客
相關推薦

2022-11-03 07:22:42

2022-11-01 07:43:30

2023-08-29 09:46:12

SQLCTE遞歸

2024-02-27 08:05:32

Flink分區機制數據傳輸

2021-08-31 10:07:16

Flink Hud數據湖阿里云

2024-01-29 08:07:42

FlinkYARN架構

2024-08-05 00:10:00

2024-04-09 07:50:59

Flink語義Watermark

2023-02-26 00:12:10

Hadoop數據湖存儲

2024-02-04 09:00:00

向量查詢數據檢索MyScale

2022-05-09 09:03:04

SQL數據流數據

2010-09-28 15:34:05

SQL表結構

2010-09-26 15:23:24

SQL語句

2010-09-28 10:53:53

SQL表結構

2010-10-21 14:43:46

SQL Server查

2021-08-31 07:54:24

SQLDblink查詢

2010-11-11 14:36:11

SQL Server系

2022-06-09 14:19:46

順豐數據集成Flink

2010-09-25 16:42:45

sql語句

2023-07-28 09:54:14

SQL數據Excel
點贊
收藏

51CTO技術棧公眾號

成人片免费看| 你懂的视频在线免费| 欧美福利电影在线观看| 亚洲成人网久久久| 91热这里只有精品| 性xxxfreexxxx性欧美| 91一区二区三区在线播放| 国产精品视频地址| 日韩少妇裸体做爰视频| 成人直播大秀| 亚洲精品国产精品国自产在线| 37pao成人国产永久免费视频| 欧美成人精品一区二区男人看| 成人亚洲一区二区一| 国产免费亚洲高清| 免费观看成人毛片| 欧美日本不卡| 最近2019免费中文字幕视频三 | 国产91亚洲精品久久久| 亚洲一区二区三区四区不卡 | 欧美a级在线| 国产亚洲一区二区在线| 91传媒理伦片在线观看| 国产69精品久久久久按摩| 亚洲成人精品影院| 亚洲AV无码成人精品一区| 男人天堂网在线观看| 懂色中文一区二区在线播放| 国产日本欧美视频| 中文字幕在线观看视频免费| 伊人久久亚洲美女图片| 久久亚洲一区二区三区四区五区高| 亚洲第一页av| 狼人天天伊人久久| 精品久久久久久久久久久久久久久| 欧美午夜aaaaaa免费视频| 亚洲精品mv| 精品久久久精品| 女人被男人躁得好爽免费视频| 最近高清中文在线字幕在线观看| 久久天天做天天爱综合色| 国产精品亚洲一区| 蜜臀av午夜精品| 成人亚洲一区二区一| 91香蕉嫩草影院入口| 91好色先生tv| 精品一区二区三区香蕉蜜桃 | 国产探花精品一区二区| 美女脱光内衣内裤视频久久网站| 国产成人一区二| 久久久久久亚洲av无码专区| 夜夜夜久久久| 欧美一区二区.| 国产成人无码精品| 宅男噜噜噜66一区二区| 欧美资源在线观看| 中文字幕av影院| 亚洲欧美日韩精品一区二区| 91高清免费在线观看| 在线观看黄网站| 久久美女性网| 国产精品极品美女在线观看免费| 成人免费视频国产免费| 日产欧产美韩系列久久99| 国产99久久精品一区二区| 在线免费观看av网址| 日日摸夜夜添夜夜添国产精品| 国产高清在线不卡| 在线播放国产一区| 国产一区欧美二区| 国产高清精品一区二区三区| 日本高清视频免费观看| 26uuu亚洲| 日韩动漫在线观看| 蜜桃视频网站在线| 一级做a爱片久久| 少妇无码av无码专区在线观看 | 中文精品久久| 久久久在线视频| 黄色免费av网站| 久久91精品久久久久久秒播| 99re国产视频| 精品久久久久一区二区三区 | 久久青青草综合| 免费在线观看污视频| 国产精品视频线看| 欧美美女黄色网| 欧美少妇精品| 精品视频1区2区| 成人三级做爰av| 亚洲美女久久| 久久资源免费视频| 欧美一区二区激情视频| 精品一区二区三区在线播放视频 | 亚洲资源网站| 色偷偷偷综合中文字幕;dd| 欧美精品乱码视频一二专区| 亚洲影院在线| 亚洲最大成人在线| 日本韩国一区| 亚洲精品视频在线| 国内外免费激情视频| 91国内精品白嫩初高生| 伊人av综合网| 国产在线观看免费视频今夜| 日韩专区一卡二卡| 国产精品国产三级欧美二区 | av中文字幕观看| 久久精品亚洲国产奇米99| 色婷婷777777仙踪林| 欧美特黄aaaaaaaa大片| 精品捆绑美女sm三区| 亚洲一级理论片| 国产日韩欧美三区| 亚洲综合中文字幕68页| 色影视在线观看| 欧美午夜精品在线| 欧美一区二区三区影院| 日本成人小视频| 51精品国产黑色丝袜高跟鞋| 午夜久久久久久噜噜噜噜| 中文字幕不卡在线观看| 亚洲精品无码久久久久久| 91精品尤物| 久久久成人的性感天堂| 日韩欧美一级大片| 2欧美一区二区三区在线观看视频| 337p亚洲精品色噜噜狠狠p| 日韩成人一区| 自拍偷拍亚洲精品| 波多野结衣电车痴汉| 99精品欧美一区二区蜜桃免费 | 欧美xxxooo| 三级精品在线观看| 欧美久久电影| 成人黄色免费短视频| 亚洲精品国产精品国自产观看浪潮 | 99re热精品视频| 九九精品在线播放| 97成人免费视频| 国产精品盗摄一区二区三区| 男女男精品视频站| 欧美限制电影| 国产精品视频午夜| av在线电影观看| 色激情天天射综合网| 魔女鞋交玉足榨精调教| 香蕉亚洲视频| 欧美日韩大片一区二区三区| 蜜桃av在线播放| 亚洲另类图片色| 亚洲熟妇无码乱子av电影| 久久众筹精品私拍模特| 黄色一级一级片| 欧美极品在线观看| 国产精品久久不能| 婷婷成人激情| 日韩午夜电影在线观看| 强乱中文字幕av一区乱码| 国产成人在线看| 霍思燕三级露全乳照| 欧美调教在线| 国产成人综合一区二区三区| yiren22综合网成人| 欧美三级一区二区| 朝桐光av在线| 99久久综合精品| 国产欧美高清在线| 成人三级视频| 96sao精品视频在线观看| 日本资源在线| 亚洲精品在线视频| 亚洲熟妇av乱码在线观看| 成人免费小视频| 精品无码av一区二区三区| 99在线|亚洲一区二区| 欧美日韩电影一区二区三区| 婷婷精品久久久久久久久久不卡| 欧美精品在线免费| 无码国产精品高潮久久99| 欧美性受xxxx| 激情五月少妇a| 91麻豆免费观看| 激情视频免费网站| 亚洲视频一二| 日韩久久久久久久| 8x国产一区二区三区精品推荐| 欧美一级大片视频| 毛片在线不卡| 亚洲加勒比久久88色综合| 中文字幕第2页| 亚洲国产你懂的| 黄色免费一级视频| 波多野结衣精品在线| 中文字幕亚洲乱码| 99亚洲精品| 免费观看亚洲视频| 精品国产乱码久久久久久蜜坠欲下| 亚洲tv在线观看| 依依综合在线| 欧美国产日韩中文字幕在线| 国产剧情在线观看| 亚洲国产精品免费| 国产又粗又猛又爽| 疯狂蹂躏欧美一区二区精品| 尤物在线免费视频| 久久久美女毛片| 久久久精品人妻一区二区三区| 日韩二区在线观看| 日韩五码在线观看| 亚洲综合小说| 亚洲精品国产精品国自产观看| 国产精品丝袜在线播放| 成人精品视频在线| 国产成人精品一区二三区在线观看 | 卡通动漫亚洲综合| 国产欧美精品一区二区色综合| 亚洲欧美日韩色| 国产原创一区二区| 黑森林精品导航| 嫩草成人www欧美| www.国产在线视频| 亚洲精品成人| 中文字幕一区二区三区有限公司 | 99国产精品久久久久久久久久久| 久久久久久综合网| 美国一区二区三区在线播放 | 中文字幕码精品视频网站| 亚洲六月丁香色婷婷综合久久| av无码一区二区三区| 粉嫩aⅴ一区二区三区四区| 红桃视频一区二区三区免费| 男人的j进女人的j一区| 欧美 日韩 国产 激情| 国产精品综合色区在线观看| 欧美综合在线播放| 亚洲精品黄色| 波多野结衣综合网| 999亚洲国产精| 男女激情免费视频| 在线播放日韩| 僵尸世界大战2 在线播放| 欧美久久影院| 人妻av无码专区| 韩国在线视频一区| 日本福利视频一区| 日韩一级在线| 无遮挡又爽又刺激的视频| 国产精品久久久久9999高清| 国产精品自拍片| 销魂美女一区二区三区视频在线| 99999精品视频| 日韩黄色一级片| 欧美成人三级在线播放| 久久99精品久久久久久动态图 | 国产精品久久久久久久乖乖| 亚洲视频碰碰| 国产女女做受ⅹxx高潮| 三级影片在线观看欧美日韩一区二区| 国产裸体免费无遮挡| 蜜臀av一区二区在线观看 | 电影中文字幕一区二区| 91高跟黑色丝袜呻吟在线观看| 4438全国亚洲精品观看视频| 国产乱码精品一区二区三区卡| 日韩美女毛片| 亚洲福利av在线| 欧美日韩a区| 日韩欧美一区二| 看电视剧不卡顿的网站| 古装做爰无遮挡三级聊斋艳谭| 成人精品国产福利| 免费在线观看污| 亚洲色图一区二区三区| 中文字幕一区二区三区手机版| 欧美午夜激情小视频| 一级黄色大片网站| 精品国产亚洲在线| 福利片在线观看| 久热精品在线视频| 性欧美又大又长又硬| 国产日韩欧美在线| 久久精品66| 亚洲一区三区| 91久久亚洲| 艹b视频在线观看| 成人av在线影院| 国产精品www爽爽爽| 一区二区三区在线视频观看| 国产精品视频一区在线观看| 91精品国产全国免费观看| 亚洲aaaaaaa| 麻豆国产va免费精品高清在线| 蜜桃视频www网站在线观看| 成人精品视频99在线观看免费| 蜜桃久久久久| 国产日韩视频在线播放| 乱码第一页成人| 国产欧美激情视频| 国产亚洲午夜高清国产拍精品| 欧美在线视频第一页| 欧美午夜激情在线| 亚洲精品911| xxx一区二区| 午夜精品久久久久久久久久蜜桃| 91在线观看免费高清| 色综合综合网| 缅甸午夜性猛交xxxx| 国产一区福利在线| 亚洲精品视频网址| 精品美女久久久久久免费| 国产精品毛片久久久久久久av| 亚洲美女视频网站| 女同视频在线观看| 91久久中文字幕| 欧美熟乱15p| 国产精品人人妻人人爽人人牛| 高清在线观看日韩| 91日韩中文字幕| 欧美日韩成人综合天天影院| 精彩国产在线| 国产91精品久久久久久| 日日夜夜精品视频| 国产成年人在线观看| 日本麻豆一区二区三区视频| 欧美做受喷浆在线观看| 亚洲一区精品在线| 亚洲成熟女性毛茸茸| 久久综合伊人77777蜜臀| 日本久久二区| 亚洲精品一区二区三区樱花| 久久亚洲欧洲| 香蕉网在线播放| 精品久久久中文| 污污网站在线免费观看| 45www国产精品网站| 亚洲+变态+欧美+另类+精品| 青青青免费在线| 91丨porny丨蝌蚪视频| 天天操天天爽天天干| 亚洲国产欧美一区| 欧美调教sm| 精品无人区一区二区三区竹菊 | 91精品成人久久| 免费看久久久| 成人免费观看毛片| 国产日韩欧美精品综合| 久久久久久亚洲av无码专区| 国产亚洲精品一区二区| 成人高清一区| 在线综合视频网站| 国产剧情一区二区| 免费一级a毛片夜夜看| 日韩欧美一区二区三区在线| 在线黄色网页| 国产日韩精品一区观看| 日韩一级在线| 受虐m奴xxx在线观看| 在线观看视频91| 国产午夜精品久久久久免费视| 亚洲r级在线观看| 亚洲欧洲综合| 91精品人妻一区二区三区蜜桃欧美 | 永久555www成人免费| 欧美在线一级| 黄色激情在线视频| 久久久久久久久久久黄色 | 国产精品影视天天线| 久久99久久98精品免观看软件| 精品国产乱码久久久久久蜜臀| 国产在线看片免费视频在线观看| 欧美中日韩免费视频| 国产一区二区成人久久免费影院| 日本熟妇色xxxxx日本免费看| 亚洲久久久久久久久久| 欧美一级做a| 国产av国片精品| 欧美国产综合色视频| 国内精品偷拍视频| 国产69久久精品成人| 欧美激情电影| 李丽珍裸体午夜理伦片| 欧洲精品中文字幕| 在线播放蜜桃麻豆| 免费中文日韩| 国产在线国偷精品产拍免费yy| 日韩激情在线播放| 在线看日韩av| 波多野结衣一区二区三区免费视频| 国产男女激情视频| 亚洲美女屁股眼交3| 青梅竹马是消防员在线| 92看片淫黄大片欧美看国产片 | 亚洲v日本v欧美v久久精品| 玖玖综合伊人| 国产传媒一区二区三区| 免费成人美女在线观看| 日本少妇在线观看| 久久久精品视频在线观看| 制服丝袜日韩|