官宣|Apache Flink 1.19 發(fā)布公告

Apache Flink PMC(項(xiàng)目管理委員)很高興地宣布發(fā)布 Apache Flink 1.19.0。與往常一樣蒂秘,這是一個(gè)充實(shí)的版本褒链,包含了廣泛的改進(jìn)和新功能≈魑。總共有 162 人為此版本做出了貢獻(xiàn)冠息,完成了 33 個(gè) FLIPs、解決了 600 多個(gè)問(wèn)題孕索。感謝各位貢獻(xiàn)者的支持逛艰!

一、Flink SQL 提升

源表自定義并行度

現(xiàn)在搞旭,在 Flink 1.19 中散怖,您可以通過(guò)選 scan.parallelism 設(shè)置自定義并行度,以調(diào)整性能肄渗。第一個(gè)可用的連接器是 DataGen( Kafka 連接器即將推出)镇眷。下面是一個(gè)使用 SQL Client 的示例:

-- set parallelism within the ddl
CREATE TABLE Orders (
    order_number BIGINT,
    price        DECIMAL(32,2),
    buyer        ROW<first_name STRING, last_name STRING>,
    order_time   TIMESTAMP(3)
) WITH (
    'connector' = 'datagen',
    'scan.parallelism' = '4'
);

-- or set parallelism via dynamic table option
SELECT * FROM Orders /*+ OPTIONS('scan.parallelism'='4') */;

更多信息

可配置的 SQL Gateway Java 選項(xiàng)

一個(gè)用于指定 Java 選項(xiàng)的新選項(xiàng) env.java.opts.sql-gateway ,這樣你就可以微調(diào)內(nèi)存設(shè)置翎嫡、垃圾回收行為和其他相關(guān) Java 參數(shù)欠动。

更多信息

使用 SQL 提示配置不同的狀態(tài) TTL

從 Flink 1.18 開(kāi)始,Table API 和 SQL 用戶(hù)可以通過(guò) SQL 編譯計(jì)劃為有狀態(tài)操作符單獨(dú)設(shè)置狀態(tài)存續(xù)時(shí)間 ( TTL )惑申。在 Flink 1.19 中具伍,用戶(hù)可以使用 STATE_TTL 提示,以更靈活的方式直接在查詢(xún)中為常規(guī)連接和分組聚合指定自定義 TTL 值圈驼。

這一改進(jìn)意味著您不再需要修改編譯后的計(jì)劃人芽,就能為這些常用操作符設(shè)置特定的 TTL。引入 STATE_TTL 提示后绩脆,您可以簡(jiǎn)化工作流程萤厅,并根據(jù)操作要求動(dòng)態(tài)調(diào)整 TTL。

下面是一個(gè)例子:

-- set state ttl for join
SELECT /*+ STATE_TTL('Orders'= '1d', 'Customers' = '20d') */ *
FROM Orders LEFT OUTER JOIN Customers
    ON Orders.o_custkey = Customers.c_custkey;

-- set state ttl for aggregation
SELECT /*+ STATE_TTL('o' = '1d') */ o_orderkey, SUM(o_totalprice) AS revenue
FROM Orders AS o
GROUP BY o_orderkey;

更多信息

函數(shù)和存儲(chǔ)過(guò)程支持命名參數(shù)

現(xiàn)在靴迫,在調(diào)用函數(shù)或存儲(chǔ)過(guò)程時(shí)可以使用命名參數(shù)惕味。使用命名參數(shù)時(shí),用戶(hù)無(wú)需嚴(yán)格指定參數(shù)位置玉锌,只需指定參數(shù)名稱(chēng)及其相應(yīng)值即可名挥。同時(shí),如果沒(méi)有指定非必要參數(shù)芬沉,這些參數(shù)將默認(rèn)為空值躺同。

下面是一個(gè)使用命名參數(shù)定義帶有一個(gè)必選參數(shù)和兩個(gè)可選參數(shù)的函數(shù)的示例:

public static class NamedArgumentsTableFunction extends TableFunction<Object> {

    @FunctionHint(
            output = @DataTypeHint("STRING"),
            arguments = {
                    @ArgumentHint(name = "in1", isOptional = false, type = @DataTypeHint("STRING")),
                    @ArgumentHint(name = "in2", isOptional = true, type = @DataTypeHint("STRING")),
                    @ArgumentHint(name = "in3", isOptional = true, type = @DataTypeHint("STRING"))})
    public void eval(String arg1, String arg2, String arg3) {
        collect(arg1 + ", " + arg2 + "," + arg3);
    }

}

在 SQL 中調(diào)用函數(shù)時(shí),可以通過(guò)名稱(chēng)指定參數(shù)丸逸,例如:

SELECT * FROM TABLE(myFunction(in1 => 'v1', in3 => 'v3', in2 => 'v2'))

可選參數(shù)也可以省略:

SELECT * FROM TABLE(myFunction(in1 => 'v1'))

更多信息

Window TVF 聚合功能

  • 支持流模式下的 SESSION Window TVF

現(xiàn)在蹋艺,用戶(hù)可以在流模式下使用 SESSION Window TVF。下面是一個(gè)簡(jiǎn)單的示例:

-- session window with partition keys
SELECT * FROM TABLE(
   SESSION(TABLE Bid PARTITION BY item, DESCRIPTOR(bidtime), INTERVAL '5' MINUTES));

-- apply aggregation on the session windowed table with partition keys
SELECT window_start, window_end, item, SUM(price) AS total_price
FROM TABLE(
    SESSION(TABLE Bid PARTITION BY item, DESCRIPTOR(bidtime), INTERVAL '5' MINUTES))
GROUP BY item, window_start, window_end;
  • Window TVF 聚合支持處理更新流

    窗口聚合運(yùn)算符(基于窗口 TVF 函數(shù)生成)現(xiàn)在可以順利處理更新流(如 CDC 數(shù)據(jù)源等)黄刚。建議用戶(hù)從傳統(tǒng)的 窗口聚合遷移到新語(yǔ)法捎谨,以獲得更全面的功能支持。

更多信息

新的 UDF 類(lèi)型:AsyncScalarFunction

常見(jiàn)的 UDF 類(lèi)型 ScalarFunction 可以很好地處理 CPU 密集型操作憔维,但對(duì)于 IO 密集型或其他長(zhǎng)時(shí)間運(yùn)行的計(jì)算則效果不佳涛救。在 Flink 1.19 中,我們新增了 AsyncScalarFunction 业扒,它是一種用戶(hù)定義的異步 ScalarFunction 检吆,允許異步發(fā)出并發(fā)函數(shù)調(diào)用。

更多信息

Regular Join 支持 MiniBatch 優(yōu)化

消息放大是 Flink 中執(zhí)行級(jí)聯(lián)連接時(shí)的一個(gè)痛點(diǎn)程储,現(xiàn)在在 Flink 1.19 中得到了解決蹭沛,新的 MiniBatch 優(yōu)化可用于 Regular Join,以減少此類(lèi)級(jí)聯(lián)連接場(chǎng)景中的中間結(jié)果章鲤。

更多信息

二摊灭、Runtime & Coordination 提升

批作業(yè)支持源表動(dòng)態(tài)并行度推導(dǎo)

在 Flink 1.19 中,我們支持批作業(yè)的源表動(dòng)態(tài)并行度推導(dǎo)败徊,允許源連接器根據(jù)實(shí)際消耗的數(shù)據(jù)量動(dòng)態(tài)推斷并行度帚呼。

與以前的版本相比,這一功能有了重大改進(jìn)皱蹦,以前的版本只能為源節(jié)點(diǎn)分配固定的默認(rèn)并行度煤杀。

源連接器需要實(shí)現(xiàn)推理接口,以啟用動(dòng)態(tài)并行度推理根欧。目前怜珍,F(xiàn)ileSource 連接器已經(jīng)開(kāi)發(fā)出了這一功能。

此外凤粗,配置 execution.batch.adaptive.auto-parallelism.default-source-parallelism 將被用作源并行度推理的上限∷址海現(xiàn)在,它不會(huì)默認(rèn)為 1嫌拣。取而代之的是柔袁,如果沒(méi)有設(shè)置,將使用通過(guò)配置 execution.batch.adaptive.auto-parallelism.max-parallelism 設(shè)置的允許并行度上限异逐。如果該配置也未設(shè)置捶索,則將使用默認(rèn)的并行度設(shè)置 parallelism.default 或 StreamExecutionEnvironment#setParallelism() 。

更多信息

Flink Configuration 支持標(biāo)準(zhǔn) YAML 格式

從 Flink 1.19 開(kāi)始灰瞻,F(xiàn)link 正式全面支持標(biāo)準(zhǔn) YAML 1.2 語(yǔ)法腥例。默認(rèn)配置文件已改為 config.yaml 辅甥,放置在 conf/directory 中。如果用戶(hù)想使用傳統(tǒng)的配置文件 flink-conf.yaml 燎竖,只需將該文件復(fù)制到 conf/directory 中即可璃弄。一旦檢測(cè)到傳統(tǒng)配置文件 flink-conf.yml ,F(xiàn)link 就會(huì)優(yōu)先使用它作為配置文件构回。而在即將推出的 Flink 2.0 中夏块, flink-conf.yaml 配置文件將不再起作用。

更多信息

在 Flink Web 上 Profiling JobManager/TaskManager

在 Flink 1.19 中纤掸,我們支持在 JobManager/TaskManager 級(jí)別觸發(fā) Profile脐供,允許用戶(hù)創(chuàng)建具有任意時(shí)間間隔和事件模式(由 async-profiler 支持)的 Profile 實(shí)例。用戶(hù)可以在 Flink Web UI 中輕松提交剖析并導(dǎo)出結(jié)果借跪。

例如政己,用戶(hù)只需在確定存在性能瓶頸的候選任 JobManager/TaskManager 后,通過(guò) "Create Profiling [圖片上傳中...(3.png-a8c14e-1710817059321-0)]
Instance" 提交一個(gè)具有指定周期和模式的 Profile 實(shí)例:

Profile 結(jié)果:

更多信息

新增管理員 JVM 選項(xiàng)配置選項(xiàng)

有一組管理員 JVM 選項(xiàng)可供使用掏愁,它們是用戶(hù)設(shè)置的額外 JVM 選項(xiàng)的前綴匹颤,用于全平臺(tái)范圍的 JVM 調(diào)整。

更多信息

三托猩、Checkpoints 提升

Source 反壓時(shí)支持使用更大的 Checkpointing 間隔

引入 ProcessingBacklog 的目的是為了說(shuō)明處理記錄時(shí)應(yīng)采用低延遲還是高吞吐量印蓖。ProcessingBacklog 可由 Source 算子設(shè)置,并可用于在運(yùn)行時(shí)更改作業(yè)的檢查點(diǎn)間隔京腥。

更多信息

CheckpointsCleaner 并行清理單個(gè)檢查點(diǎn)狀態(tài)

現(xiàn)在赦肃,在處置不再需要的檢查點(diǎn)時(shí),ioExecutor 會(huì)并行處置每個(gè)狀態(tài)句柄/狀態(tài)文件公浪,從而大大提高了處置單個(gè)檢查點(diǎn)的速度(對(duì)于大型檢查點(diǎn)他宛,處置時(shí)間可從 10 分鐘縮短至 < 1 分鐘)∏菲可以通過(guò)設(shè)置為 false 恢復(fù)舊版本的行為厅各。

更多信息

通過(guò)命令行客戶(hù)端觸發(fā) Checkpoints

命令行界面支持手動(dòng)觸發(fā)檢查點(diǎn)。

使用方法:

./bin/flink checkpoint $JOB_ID [-full]

如果指定"-full "選項(xiàng)预柒,就會(huì)觸發(fā)完全檢查點(diǎn)队塘。否則猖凛,如果作業(yè)配置為定期進(jìn)行增量檢查點(diǎn)巩剖,則會(huì)觸發(fā)增量檢查點(diǎn)。

更多信息

四鲜滩、Connector API提升

與 Source API 一致的 SinkV2 新接口

在 Flink 1.19 中淋袖,SinkV2 API 做了一些修改鸿市,以便與 Source API 保持一致。以下接口已被棄用: TwoPhaseCommittingSink、StatefulSink 焰情、WithPreWriteTopology陌凳、WithPreCommitTopology、WithPostCommitTopology 内舟。引入了以下新接口 CommitterInitContext 冯遂、CommittingSinkWriter 、 WriterInitContext 谒获、StatefulSinkWrite。更改了以下接口方法的參數(shù): Sink#createWriter 壁却。 在 1.19 版本發(fā)布期間批狱,原有接口仍將可用,但會(huì)在后續(xù)版本中移除展东。

更多信息

用于跟蹤 Committables 狀態(tài)的新 Committer 指標(biāo)

修改了 TwoPhaseCommittingSink#createCommitter 方法的參數(shù)化赔硫,新增了 CommitterInitContext 參數(shù)。原來(lái)的方法在 1.19 版本發(fā)布期間仍然可用盐肃,但會(huì)在后續(xù)版本中移除爪膊。

更多信息

五、重要API棄用

為了給 Flink 2.0 版本做準(zhǔn)備砸王,社區(qū)決定正式廢棄多個(gè)已接近生命周期終點(diǎn)的 API推盛。

六、升級(jí)說(shuō)明

Apache Flink 社區(qū)努力確保升級(jí)過(guò)程盡可能平穩(wěn), 但是升級(jí)到 1.19 版本可能需要用戶(hù)對(duì)現(xiàn)有應(yīng)用程序做出一些調(diào)整次乓。請(qǐng)參考 Release Notes 獲取更多的升級(jí)時(shí)需要的改動(dòng)與可能的問(wèn)題列表細(xì)節(jié)吓歇。

貢獻(xiàn)者列表

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市票腰,隨后出現(xiàn)的幾起案子城看,更是在濱河造成了極大的恐慌,老刑警劉巖杏慰,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件析命,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡逃默,警方通過(guò)查閱死者的電腦和手機(jī)鹃愤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)完域,“玉大人软吐,你說(shuō)我怎么就攤上這事∫魉埃” “怎么了凹耙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肠仪。 經(jīng)常有香客問(wèn)我肖抱,道長(zhǎng),這世上最難降的妖魔是什么异旧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任意述,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荤崇。我一直安慰自己拌屏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布术荤。 她就那樣靜靜地躺著倚喂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓣戚。 梳的紋絲不亂的頭發(fā)上端圈,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音子库,去河邊找鬼舱权。 笑死,一個(gè)胖子當(dāng)著我的面吹牛刚照,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喧兄,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼无畔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了吠冤?” 一聲冷哼從身側(cè)響起浑彰,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拯辙,沒(méi)想到半個(gè)月后郭变,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涯保,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年诉濒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夕春。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡未荒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出及志,到底是詐尸還是另有隱情片排,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布速侈,位于F島的核電站率寡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏倚搬。R本人自食惡果不足惜冶共,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧比默,春花似錦幻捏、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至醋奠,卻和暖如春榛臼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背窜司。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工沛善, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人塞祈。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓金刁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親议薪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尤蛮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容