深入解讀 Flink SQL 1.13功能點,不入坑血虧

原文連結:深入解讀 Flink SQL 1。13功能點,不入坑血虧!

自從Flink 社群更新Flink1。13版本之後,博主作為一名Flink開發人員,對Flink SQL 1。13進行了探索,接下來將以四個部分對新增的內容進行展開介紹。

深入解讀 Flink SQL 1.13功能點,不入坑血虧

在整個Flink 1。13版本下,來自全球各地的開發人員共解決ISSUES 1000+,提交PR 200+,針對Flink Table/ SQL模組,解決ISSUES 400+ 。

深入解讀 Flink SQL 1.13功能點,不入坑血虧

其中Flink Table / SQL 新增的功能模組主要分為以下5大模組

深入解讀 Flink SQL 1.13功能點,不入坑血虧

深入解讀 Flink SQL 1.13功能點,不入坑血虧

Window TVF 包含四部分內容:

Window TVF 語法

近實時累計計算

Window 效能最佳化

多維資料分析

(1) Window TVF 語法

1。13前是一個特殊的GroupWindowFunction;

1。13 用Table-Valued Function 進行了語法標準化;

深入解讀 Flink SQL 1.13功能點,不入坑血虧

完整的關係代數表達

輸入是一個關係,輸出也是一個關係

每個關係對應一個數據集

深入解讀 Flink SQL 1.13功能點,不入坑血虧

支援TUMBLE,HOP WINDOW

SESSION WINDOW 預計1。14支援

新增CUMULATE WINDOW

深入解讀 Flink SQL 1.13功能點,不入坑血虧

深入解讀 Flink SQL 1.13功能點,不入坑血虧

(2) 近實時累計計算

案例: 每10分鐘統計一次當天的累計使用者UV

深入解讀 Flink SQL 1.13功能點,不入坑血虧

結果更精準

追資料時,曲線不會跳變

深入解讀 Flink SQL 1.13功能點,不入坑血虧

深入解讀 Flink SQL 1.13功能點,不入坑血虧

深入解讀 Flink SQL 1.13功能點,不入坑血虧

(3) Window 效能最佳化

記憶體最佳化:

透過記憶體預分配 ,快取Window的資料,透過Window WaterMark觸發計算。

切片最佳化:

將Window切片,儘可能複用已計算結果,如hop window,cumulate window。

運算元最佳化:

window支援local-global 最佳化,同時支援 count(distinct)自動解熱點最佳化。

遲到資料:

支援遲到資料計算到後續分片,保證資料準確性。

在 count(distinct)場景會有更好的效能提升

深入解讀 Flink SQL 1.13功能點,不入坑血虧

(4) 多維資料分析

GROUPING SETS

ROLLUP

CUBE

深入解讀 Flink SQL 1.13功能點,不入坑血虧

支援Window Top-N

深入解讀 Flink SQL 1.13功能點,不入坑血虧

2、FLIP-162: 時區和時間函式

時區和時間函式包含四部分內容:

時區問題分析

時間函式糾正

時間型別使用

夏令時支援

(1) 時區問題分析

1、處理時間視窗剛好晚8個小時

2、BIGINT轉TIMESTAMP是否隱含時區資訊

3、watermark + 8h 問題

4、SQL 時區問題

5、 CURRENT_DATE函式問題

6、CURRENT_DATE,CURRENT_TIMESTAMP 時區問題

7、long 轉 timestamp 怎麼做

8、Hive分割槽提交的時區差問題

9、PROCTIME()函式語義問題

10、毫秒值如何宣告成時間型別

時區問題原因:

PROCTIME()應該考慮時區,但未考慮時區

CURRENT_TIMESTAMP/CURRENT_TIME/CURRENT_DATE/NOW()未考慮時區

TIMESTAMP型別不考慮時區,但使用者希望是本地時區的時間

深入解讀 Flink SQL 1.13功能點,不入坑血虧

支援TIMESTAMP_LTZ型別

深入解讀 Flink SQL 1.13功能點,不入坑血虧

TIMESTAMP VS TIMESTAMP_LTZ

深入解讀 Flink SQL 1.13功能點,不入坑血虧

(2) 時間函式糾正

訂正 PROCTIME() 函式

深入解讀 Flink SQL 1.13功能點,不入坑血虧

訂正 CURRENT_TIMESTAMP / CURRENT_TIME / CURRENT_DATE / NOW() 函式

深入解讀 Flink SQL 1.13功能點,不入坑血虧

解決 processing time window 時區問題

深入解讀 Flink SQL 1.13功能點,不入坑血虧

深入解讀 Flink SQL 1.13功能點,不入坑血虧

訂正 Streaming 和 Batch 模式下函式取值方式

Streaming 模式 per-record 計算,Batch 模式在 query-start 計算:

LOCALTIME

LOCALTIMESTAMP

CURRENT_DATE

CURRENT_TIME

CURRENT_TIMESTAMP

NOW()

Stream 模式 Batch 模式都是per-record 計算:

CURRENT_ROW_TIMESTAMP()

PROCIME()

(3) 時間型別使用

Event time 定義在 TIMESTAMP 列上

適用於源資料包含字串的時間(如:2021-04-15 14:00:00)場景

深入解讀 Flink SQL 1.13功能點,不入坑血虧

深入解讀 Flink SQL 1.13功能點,不入坑血虧

Event time 定義在 TIMESTAMP_LTZ 列上

適用於源資料包含long值的時間(如:1621649473000)場景,以及夏令時時區使用者

深入解讀 Flink SQL 1.13功能點,不入坑血虧

深入解讀 Flink SQL 1.13功能點,不入坑血虧

(4) 夏令時支援

Flink 支援在TIMESTAMP_LTZ列上定義時間屬性,Flink SQL 在window處理時結合TIMESTAMP和 TIMESTAMP_LTZ, 優雅地支援了夏令時。

深入解讀 Flink SQL 1.13功能點,不入坑血虧

在洛杉磯時區,[2021-03-14 00:00,2021-03-14 00:04]視窗會收集

3

個小時的資料

在非夏令時區,[2021-03-14 00:00,2021-03-14 00:04]視窗會收集

4

個小時的資料

深入解讀 Flink SQL 1.13功能點,不入坑血虧

3、FLIP-152: 提升Hive語法相容性

支援常用的 Hive DML,DQL語法

SORT/CLUSTER/DISTRIBUTE BY

Group By

Join

Union

LATERAL VIEW

Window Functions

SubQueries

CTE

INSERT INTO dest schema

Implicit type convesions

支援常用的 Hive DML,DQL語法

Hive dialect 需要配合HiveCatalog 和 Hive Module 一起使用

Hive Module 提供了Hive 所有內建函式,載入後可以直接訪問

深入解讀 Flink SQL 1.13功能點,不入坑血虧

Hive dialect 支援建立/刪除 Catalog函式

深入解讀 Flink SQL 1.13功能點,不入坑血虧

4、FLIP-163: 改進 SQL Client

SQL Client 支援指定檔案初始化

深入解讀 Flink SQL 1.13功能點,不入坑血虧

Deprecate YAML 檔案,不推薦使用 YAML檔案初始化

SQL Client 支援指定檔案初始化

深入解讀 Flink SQL 1.13功能點,不入坑血虧

SQL Client 支援STATEMENT SET

深入解讀 Flink SQL 1.13功能點,不入坑血虧

5、FLIP-136: 增強DataStream 和 Table 的轉換

支援DataStream 和Table 轉換時傳遞 event Time 和 watermark

深入解讀 Flink SQL 1.13功能點,不入坑血虧

支援Changelog 資料流在Table 和 DataStream 間互相轉換

深入解讀 Flink SQL 1.13功能點,不入坑血虧

深入解讀 Flink SQL 1.13功能點,不入坑血虧

Flink 1.13 版本包含:

支援Window TVF

時區和時間函式

提升Hive相容性

改進SQL Client

增強DataStream轉換

Flink 1.14 版本計劃:

刪除Legacy Planner

完善Window TVF

提升 Schema Handling

增強 Flink CDC

為回饋廣大計算機愛好者,本博主專門整理了關於Java、大資料、演算法、前端、人工智慧、作業系統、網路等所學知識的書籍,如果看到此博文的小夥伴們,覺得對你有幫助,就快速領取吧!連結如下:

免費領書 | 大資料技術書籍全部免費領取!!!

強烈建議收藏!| 程式設計師必須擁有的書籍

作者簡介:3分鐘秒懂大資料,網際網路大廠擔任大資料演算法開發工程師,秋招7offer。

CSDN連結:

逆流而上Mr李_在IT中穿梭旅行_CSDN部落格-資料結構,java,Flink領域博主