成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關(guān)于 Flink Regular Join 與 TTL 的理解

開發(fā)
在 Regular Join 時 Flink 會將兩條沒有時間窗口限制的流的所有數(shù)據(jù)存儲在 State 中,由于流是無窮無盡持續(xù)流入的,隨著時間的不斷推進,內(nèi)存中積累的狀態(tài)會越來越多。

對于流查詢,Regular Join 的語法是最靈活的,它允許任何類型的更新(插入、更新、刪除)輸入表。

Regular Join 包含以下幾種(以 L 作為左流中的數(shù)據(jù)標識,R 作為右流中的數(shù)據(jù)標識):

  • Inner Join(Inner Equal Join):當兩條流 Join 到才會輸出 +[L, R]
  • Left Join(Outer Equal Join):左流數(shù)據(jù)到達之后 Join 到 R 流數(shù)據(jù)則輸出 +[L, R],沒 Join 到輸出 +[L, null])。如果右流之后數(shù)據(jù)到達之后,發(fā)現(xiàn)左流之前輸出過沒有 Join 到的數(shù)據(jù),則會發(fā)起回撤流,先輸出 -[L, null],然后輸出 +[L, R]。
  • Right Join(Outer Equal Join):與 Left Join 邏輯相反。
  • Full Join(Outer Equal Join):流任務(wù)中,左流或者右流的數(shù)據(jù)到達之后,無論有沒有 Join 到另外一條流的數(shù)據(jù),都會輸出(對右流來說:Join 到輸出 +[L, R],沒 Join 到輸出 +[null, R];對左流來說:Join 到輸出 +[L, R],沒 Join 到輸出 +[L, null])。如果一條流的數(shù)據(jù)到達之后,發(fā)現(xiàn)之前另一條流之前輸出過沒有 Join 到的數(shù)據(jù),則會發(fā)起回撤流(左流數(shù)據(jù)到達為例:回撤 -[null, R],輸出 +[L, R],右流數(shù)據(jù)到達為例:回撤 -[L, null],輸出 +[L, R])。

Regular Inner Join

Flink SQL?:

CREATE TABLE matchResult (
guid STRING
) WITH (
'connector' = 'kafka',
'topic' = 'match_result_log_test',
'properties.bootstrap.servers' = 'xxxxxxxxxxxxxxxxxxx',
'properties.group.id' = 'flinkTestGroup',
'scan.startup.mode' = 'latest-offset',
'format' = 'json'
);

CREATE TABLE readRecord (
guid STRING,
book_name STRING
) WITH (
'connector' = 'kafka',
'topic' = 'read_record_log_test',
'properties.bootstrap.servers' = 'xxxxxxxxxxxxxxxxxxx',
'properties.group.id' = 'flinkTestGroup',
'scan.startup.mode' = 'latest-offset',
'format' = 'json'
);

CREATE TABLE sink_table (
guid STRING,
book_name STRING
) WITH (
'connector' = 'print'
);

INSERT INTO sink_table
SELECT
matchResult.guid,
readRecord.book_name
FROM matchResult
INNER JOIN readRecord ON matchResult.guid = readRecord.guid;

輸出結(jié)果解析?:

                               -- L 流數(shù)據(jù)達到,由于沒有 Join  R 流數(shù)據(jù)而且是 inner join 便不輸出結(jié)果
+I[111, book1] -- R 流數(shù)據(jù)達到, Join L 流數(shù)據(jù),便輸出 +I[111, book1]
-- R 流數(shù)據(jù)達到,由于沒有 Join L 流數(shù)據(jù)而且是 inner join 便不輸出結(jié)果
+I[222, book2] -- L 流數(shù)據(jù)達到, Join R 流數(shù)據(jù)便輸出結(jié)果

Regular Left Join(Right join 則相反)

Flink SQL:

CREATE TABLE matchResult (
guid STRING
) WITH (
'connector' = 'kafka',
'topic' = 'match_result_log_test',
'properties.bootstrap.servers' = 'xxxxxxxxxxxxxxxxxxx',
'properties.group.id' = 'flinkTestGroup',
'scan.startup.mode' = 'latest-offset',
'format' = 'json'
);

CREATE TABLE readRecord (
guid STRING,
book_name STRING
) WITH (
'connector' = 'kafka',
'topic' = 'read_record_log_test',
'properties.bootstrap.servers' = 'xxxxxxxxxxxxxxxxxxx',
'properties.group.id' = 'flinkTestGroup',
'scan.startup.mode' = 'latest-offset',
'format' = 'json'
);

CREATE TABLE sink_table (
guid STRING,
book_name STRING
) WITH (
'connector' = 'print'
);

INSERT INTO sink_table
SELECT
matchResult.guid,
readRecord.book_name
FROM matchResult
LEFT JOIN readRecord ON matchResult.guid = readRecord.guid;

輸出結(jié)果解析:

+I[111, null]           -- L 流數(shù)據(jù)達到,沒有 Join  R 流數(shù)據(jù),便輸出 +[L, null]
-D[111, null] -- R 流的數(shù)據(jù)到達,發(fā)現(xiàn) L 流之前輸出過沒有 Join 到的數(shù)據(jù),則會發(fā)起回撤流,先輸出 -[L, null]
+I[111, book1] -- 再輸出 +[L, R]
-- 這里模擬一條 R guid = 222 的數(shù)據(jù)到達,由于是 left join 且沒有 join L 流,因此不做輸出
+I[222, book2] -- L guid = 222 的數(shù)據(jù)達到 join R 后輸出結(jié)果 +[L, R]

Regular Full Join

Flink SQL:

CREATE TABLE matchResult (
guid STRING
) WITH (
'connector' = 'kafka',
'topic' = 'match_result_log_test',
'properties.bootstrap.servers' = 'xxxxxxxxxxxxxxxxxxx',
'properties.group.id' = 'flinkTestGroup',
'scan.startup.mode' = 'latest-offset',
'format' = 'json'
);

CREATE TABLE readRecord (
guid STRING,
book_name STRING
) WITH (
'connector' = 'kafka',
'topic' = 'read_record_log_test',
'properties.bootstrap.servers' = 'xxxxxxxxxxxxxxxxxxx',
'properties.group.id' = 'flinkTestGroup',
'scan.startup.mode' = 'latest-offset',
'format' = 'json'
);

CREATE TABLE sink_table (
guid STRING,
book_name STRING
) WITH (
'connector' = 'print'
);

INSERT INTO sink_table
SELECT
matchResult.guid,
readRecord.book_name
FROM matchResult
FULL JOIN readRecord ON matchResult.guid = readRecord.guid;

輸出結(jié)果解析:

+I[111, null]         -- L 流數(shù)據(jù)達到,沒有 Join  R 流數(shù)據(jù),便輸出 +I[L, null]  
+I[null, book2] -- R 流數(shù)據(jù)達到,沒有 Join R 流數(shù)據(jù),便輸出 +I[null, R]
-D[null, book2] -- L 流新數(shù)據(jù)到達,發(fā)現(xiàn)之前 R 流之前輸出過沒有 Join 到的數(shù)據(jù),則發(fā)起回撤流,先輸出 -D[null, R]
+I[222, book2] -- 再輸出 +I[L, R]
-D[111, null] -- 反之同理
+I[111, book1]

TTL 概念

在 Regular Join 時 Flink 會將兩條沒有時間窗口限制的流的所有數(shù)據(jù)存儲在 State 中,由于流是無窮無盡持續(xù)流入的,隨著時間的不斷推進,內(nèi)存中積累的狀態(tài)會越來越多。

針對這個問題,F(xiàn)link 提出了空閑狀態(tài)保留時間(Idle State Retention Time)的概念。通過為每個狀態(tài)設(shè)置 Timer,如果這個狀態(tài)中途被訪問過,則重新設(shè)置 Timer;否則(如果狀態(tài)一直未被訪問,長期處于 Idle 狀態(tài))則在 Timer 到期時做狀態(tài)清理。這樣,就可以確保每個狀態(tài)都能得到及時的清理,可以通過 table.exec.state.ttl 參數(shù)進行控制(注意:這同時也會對結(jié)果的準確性有所影響,因此需要合理的權(quán)衡)。

責任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2018-01-29 09:21:41

TTL值域名應(yīng)用

2022-07-13 12:53:59

數(shù)據(jù)存儲

2019-12-19 14:38:08

Flink SQL數(shù)據(jù)流Join

2020-11-06 00:52:33

Flink水印延遲數(shù)據(jù)

2023-10-08 08:53:36

數(shù)據(jù)庫MySQL算法

2009-11-26 09:42:38

VS2003插件

2018-11-29 09:01:26

Apache FlinJOIN代碼

2018-11-20 07:59:43

Apache Flin JOIN算子代碼

2020-03-02 00:32:08

Python列表for循環(huán)

2018-12-11 17:28:22

Apache FlinJOIN代碼

2009-11-25 11:00:48

VS2005編譯

2010-09-09 15:43:13

SQLjoin語法

2022-09-13 09:43:08

AkkaFlink數(shù)據(jù)流

2021-08-11 08:47:31

SASE網(wǎng)絡(luò)安全零信任

2016-11-15 14:33:05

Flink大數(shù)據(jù)

2009-03-30 16:01:54

敏捷開發(fā)需求分析重構(gòu)

2013-03-20 10:43:15

HttpHandlerHttpModule

2022-01-26 22:14:59

HiveSQLSQL腳本

2023-05-08 00:08:51

Hive機制場景

2018-05-16 11:05:49

ApacheFlink數(shù)據(jù)流
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: jⅰzz亚洲| 98成人网 | 国产精品免费一区二区三区四区 | 欧美亚洲国产一区二区三区 | 91久久北条麻妃一区二区三区 | 国产精品久久久久久久久久久免费看 | 欧美一区二区视频 | 亚洲第一天堂 | 一区二区三区四区不卡视频 | 成人一区二区三区 | 欧美二级 | 久久人人网 | 综合二区| 久久大陆 | 亚洲国产精品一区 | 日韩欧美一级精品久久 | 韩国欧洲一级毛片 | 亚洲国产精品日韩av不卡在线 | 99视频精品| 国产一区二区免费电影 | 久久高清国产 | 男人的天堂中文字幕 | 成人在线电影在线观看 | 成人在线一区二区 | 国产精品久久久久久妇女6080 | 一级看片免费视频囗交动图 | jlzzjlzz欧美大全 | 精品久久久久久久久久久 | 精品日韩电影 | 啪啪毛片 | 毛片一级片| 久久精品16 | 色综合色综合色综合 | 国产在线观看 | 久久99精品久久久水蜜桃 | 欧美成人精品一区二区三区 | 亚洲欧美综合精品久久成人 | 亚洲综合色婷婷 | 最新免费av网站 | 日韩成人av在线 | 亚洲欧美日韩中文字幕一区二区三区 |