精品欧美一区二区三区在线观看 _久久久久国色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在线高清| 国产91在线|亚洲| 国产成人久久久精品一区| 538精品在线视频| 综合亚洲自拍| 日韩一区二区三区观看| 久久无码高潮喷水| 麻豆传媒在线免费看| 波多野结衣91| 成人免费网站在线看| 伊人手机在线视频| 欧美国产三区| 中文字幕亚洲无线码a| 日韩Av无码精品| 自拍偷拍欧美日韩| 日韩欧美高清视频| 欧美日韩dvd| 99中文字幕一区| 26uuuu精品一区二区| 成人性色av| 国产精品国产av| 伊人天天综合| 欧美日韩国产91| 大地资源高清在线视频观看| 欧美日韩123| 亚洲精品国产综合久久| 9191在线视频| 国产不卡精品在线| 欧美性猛交一区二区三区精品| 日本www在线视频| 色女人在线视频| 亚洲男人电影天堂| 少妇高潮流白浆| 国产精品视频二区三区| 97精品超碰一区二区三区| 99国产盗摄| 国产高清视频免费| 国内精品久久久久影院薰衣草 | 成人福利视频网站| 51成人做爰www免费看网站| 一级片在线免费观看视频| 石原莉奈一区二区三区在线观看| 97av在线影院| 久久久久久久久久影院| 99国产精品私拍| 欧美亚洲一区在线| 久久国产黄色片| 久久精品在线| 国产999视频| 国产偷人爽久久久久久老妇app| 久久久久91| 国产精品成熟老女人| 久久久久在线视频| 日韩电影网1区2区| 国产精品视频26uuu| 国产男人搡女人免费视频| 轻轻草成人在线| 国产噜噜噜噜久久久久久久久| 最新黄色网址在线观看| 蜜臀久久久99精品久久久久久| 国产精品久久久久久久久久久新郎 | 亚洲视频在线不卡| 欧美视频精品全部免费观看| 日韩精品一区二区三区中文精品| 东京热av一区| 亚洲理论电影| 深夜福利91大全| 麻豆视频在线免费看| 99久久视频| 欧美极品美女视频网站在线观看免费| 久久综合久久鬼| 亚洲一区日韩| 国产日韩欧美自拍| 亚洲AV无码精品自拍| 99国产精品一区| 亚洲欧美久久234| 4438x成人网全国最大| 亚洲高清视频的网址| 女人扒开屁股爽桶30分钟| 成人精品高清在线视频| 日韩三级电影网址| 性欧美丰满熟妇xxxx性仙踪林| 欧洲grand老妇人| 久久国产精品视频| 国产又黄又爽又色| 久久99九九99精品| 精品国产综合| 国产欧美久久久久久久久| 亚洲成av人**亚洲成av**| www黄色在线| 91麻豆精品激情在线观看最新| 日韩精品视频免费在线观看| 日本美女黄色一级片| 亚洲国产电影| 成人黄色短视频在线观看| 日韩一级片免费在线观看| 中文字幕欧美激情一区| 欧美高清中文字幕| 韩国理伦片久久电影网| 亚洲国产另类久久精品 | 亚洲综合激情网| 人人干人人视频| 99精品国产高清一区二区麻豆| 亚洲无限av看| 日本在线视频免费| 久草精品在线观看| 欧美日韩亚洲在线| 精品精品导航| 7777精品伊人久久久大香线蕉的 | 黄色视屏在线免费观看| 91精品国产福利在线观看| 一色道久久88加勒比一| 精品成人免费| 99精品国产高清一区二区| 成人影视在线播放| 日韩欧美在线视频日韩欧美在线视频 | 日韩大片免费在线观看| 国产中文一区二区三区| 免费一区二区三区| av色在线观看| 日韩精品一区二区三区老鸭窝 | 欧美高清电影在线| 亚洲一区二区av在线| 在线观看免费视频污| 欧美先锋资源| 日韩免费观看在线观看| 亚洲av电影一区| 亚洲国产日韩一区二区| 制服下的诱惑暮生| 影音先锋日韩在线| 国产精品久久视频| 久草在线青青草| 日韩欧美第一页| 熟女俱乐部一区二区视频在线| 99riav国产精品| 久久福利电影| 深夜在线视频| 亚洲精品一区二区网址| wwwxxx亚洲| 久久日一线二线三线suv| 人妻av中文系列| 欧美大胆视频| 欧美在线日韩在线| 国产高清免费av在线| 91久久国产最好的精华液| 丰满少妇在线观看资源站| 国产农村妇女精品一区二区| 麻豆成人小视频| 亚洲播播91| 色琪琪综合男人的天堂aⅴ视频| 久久国产香蕉视频| 国产精品毛片久久久久久| 亚洲网中文字幕| 欧美精选一区| 国产精品久久九九| 秋霞伦理一区| 国产午夜精品全部视频在线播放| 亚洲视频中文字幕在线观看| 中文字幕在线一区免费| 亚洲欧美天堂在线| 好看的日韩av电影| 国产一区二区三区无遮挡| 97se综合| 色妞欧美日韩在线| 亚洲精选一区二区三区| 精品毛片三在线观看| av黄色在线免费观看| 免费成人小视频| 日产精品久久久久久久蜜臀| 国内自拍欧美| 国产福利成人在线| 国产午夜精品久久久久免费视| 日韩精品中午字幕| 日韩久久中文字幕| 国产精品美女一区二区三区 | 综合综合综合综合综合网| 国产精品黄视频| av在线网址观看| 日韩成人在线电影网| 中文字幕一区二区免费| 亚洲一区二区在线免费看| 99久久人妻无码精品系列| 九九久久精品视频| 极品粉嫩国产18尤物| 欧美一区二区性| 成人av蜜桃| 成人在线视频免费| 久久人91精品久久久久久不卡| 免费在线观看一级毛片| 91精品国产欧美一区二区成人| 日本免费一二三区| 国产精品第五页| 玖玖爱在线精品视频| 久久99热狠狠色一区二区| 黄色www网站| 欧美在线资源| 日本视频一区在线观看| 亚洲国产中文在线二区三区免| 国产精品国产福利国产秒拍 | 荫蒂被男人添免费视频| 蜜桃91丨九色丨蝌蚪91桃色| 搞av.com| 欧美国产先锋| 正在播放亚洲| 国产中文精品久高清在线不| 国产一级特黄a大片99| 先锋影音网一区二区| 日本一区二区不卡| a级大胆欧美人体大胆666| 久久精品中文字幕一区| 国产一级片在线| 日韩精品一区二区三区第95| 亚洲成人第一区| 欧美日韩高清一区二区不卡| 69亚洲精品久久久蜜桃小说| 亚洲va国产天堂va久久en| 91香蕉视频在线播放| 欧美激情中文字幕| 国产传媒第一页| 成年人网站91| 最新日本中文字幕| 国产一区二区在线视频| 99sesese| 麻豆一区二区在线| 99视频精品免费| 日韩精品一二三四| 女人另类性混交zo| 美女91精品| 日本精品一区二区三区四区| 亚洲国产清纯| 国产免费黄色一级片| 亚洲一级一区| 国产成a人亚洲精v品在线观看| 欧美日韩国产在线一区| 中国一级黄色录像| 亚洲高清影视| 裸体大乳女做爰69| 中文字幕免费一区二区| 伊人久久大香线蕉午夜av| 97视频热人人精品免费| 永久域名在线精品| 亚洲啊v在线观看| 好吊色这里只有精品| 亚洲综合色网| 国产成人生活片| 精品二区久久| 国产a久久精品一区二区三区| 亚洲一线二线三线久久久| 一级做a爰片毛片| 97se亚洲国产综合自在线不卡| 国产精品无码在线| 久久女同性恋中文字幕| 9.1成人看片免费版| 国产欧美日韩三级| 香蕉久久久久久久| 亚洲色图欧美在线| 久久久国产精华液| 婷婷开心激情综合| 91在线视频免费播放| 欧美亚洲图片小说| 国产精品一品二区三区的使用体验| 4438x亚洲最大成人网| 亚洲第一页视频| 亚洲精品wwww| 暖暖视频在线免费观看| 中文字幕在线成人| 亚洲性图自拍| 91大神福利视频在线| 巨胸喷奶水www久久久免费动漫| 国产中文日韩欧美| 盗摄系列偷拍视频精品tp| 欧美日韩一区二区三区免费| 四季av一区二区三区免费观看| 免费成人进口网站| 免费看的黄色欧美网站| 亚洲色图 在线视频| 国产成人在线看| 免费观看av网站| 综合av第一页| 青青草av在线播放| 欧美日韩精品福利| 欧美一区二区三区黄片| 国产香蕉精品视频一区二区三区| 主播国产精品| 国产精品久久91| 国产精品午夜av| 一本一本a久久| 亚洲欧美日韩国产| 国内av免费观看| 国产午夜精品久久| 欧美日韩大片在线观看| 在线亚洲一区二区| 后进极品白嫩翘臀在线视频| 中文字幕国产精品| 国产中文在线播放| 91精品久久久久久久久青青| 秋霞在线一区| 好吊色视频988gao在线观看| 视频一区视频二区中文字幕| 美女露出粉嫩尿囗让男人桶| 中日韩av电影| 特级毛片www| 亚洲成年网站在线观看| 欧美jizz18hd性欧美| 日本国产高清不卡| 粉嫩久久久久久久极品| 一区二区三视频| 日日嗨av一区二区三区四区| 一起草在线视频| 一区二区三区中文在线观看| 最近中文字幕在线观看视频| 日韩精品电影网| 变态调教一区二区三区| 91在线国产电影| 欧美成人精品一区二区三区在线看| 北条麻妃在线视频观看| 国产福利一区在线| 免费黄色国产视频| 在线观看av一区二区| 欧美欧美欧美| 啪一啪鲁一鲁2019在线视频| 韩国女主播一区二区三区| 国产精品一二三在线观看| 久久99久国产精品黄毛片色诱| 日本美女xxx| 在线观看一区日韩| 精品电影在线| 日韩暖暖在线视频| 国产一区二区三区日韩精品 | 不卡av播放| 精品乱码一区二区三区| 亚洲毛片网站| 黄色免费视频网站| 午夜精品aaa| 欧美在线 | 亚洲| 97国产精品视频人人做人人爱| www.成人网| 久久人人爽人人爽人人av| 国产成人亚洲综合a∨婷婷图片| 日韩a级片在线观看| 91精品国产一区二区三区香蕉| 黄网站免费在线观看| 亚洲最大福利视频网站| 欧美激情精品久久久六区热门| 亚洲精品免费一区亚洲精品免费精品一区| 欧美激情一二三区| 中文字幕av影视| 日韩亚洲在线观看| 国产一区一区| 亚洲 欧美 综合 另类 中字| 高清成人在线观看| 亚洲精品www久久久久久| 亚洲欧美另类人妖| 成人在线视频免费| 一本色道久久88亚洲精品综合| 成人看片黄a免费看在线| 中文字幕一区二区三区手机版 | 香蕉久久久久久久| 91麻豆精品国产91| 丁香花在线高清完整版视频| 狠狠久久综合婷婷不卡| 久久婷婷一区| 中文字幕求饶的少妇| 日韩欧美国产综合一区 | 人妻少妇精品视频一区二区三区| 欧美午夜影院在线视频| 69视频在线| 国产不卡一区二区在线观看| 国产日韩欧美一区| 亚洲精品天堂网| 精品久久人人做人人爽| 亚洲成人不卡| 狠狠噜天天噜日日噜| 91天堂素人约啪| 国产又粗又长又大视频| 国语对白做受69| 欧美日韩亚洲在线观看| 秋霞午夜鲁丝一区二区| 懂色av影视一区二区三区| 尤物网在线观看| 精品免费视频123区| 精品一区二区影视| 国产成人综合欧美精品久久| 久久精品小视频| 日韩超碰人人爽人人做人人添| 91女神在线观看| 婷婷开心激情综合| 巨大荫蒂视频欧美另类大| 成人欧美一区二区三区视频xxx | 国产精品色婷婷视频| 亚洲午夜极品| 亚洲一区电影在线观看| 精品视频一区在线视频| 美国十次综合久久| 午夜欧美福利视频| 偷偷要91色婷婷|