【翻譯】Flink Table Api & SQL — 配置


本文翻譯自官網:Configuration https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/config.html

Flink Table Api & SQL 翻譯目錄

默認情況下,Table&SQL API已預先配置為產生具有可接受性能的准確結果。

根據表程序的要求,可能需要調整某些參數以進行優化。例如,無界流程序可能需要確保所需的狀態大小是有上限的(請參閱流概念)。

總覽

在每個表環境中,TableConfig提供了用於配置當前會話的選項。

對於常見或重要的配置選項,TableConfig提供了具有詳細內聯文檔的getter和setter方法。

對於更高級的配置,用戶可以直接訪問基礎鍵值映射。以下各節列出了可用於調整Flink Table和SQL API程序的所有可用選項。

注意:由於執行操作時會在不同的時間點讀取選項,因此建議在實例化表環境后盡早設置配置選項。

// instantiate table environment
val tEnv: TableEnvironment = ...

// access flink configuration
val configuration = tEnv.getConfig().getConfiguration()
// set low-level key-value options
configuration.setString("table.exec.mini-batch.enabled", "true")
configuration.setString("table.exec.mini-batch.allow-latency", "5 s")
configuration.setString("table.exec.mini-batch.size", "5000")

主要:當前僅 Blink planner 支持鍵值對的配置選項

執行配置選項

以下選項可用於調整查詢執行的性能。

 

Key Default Description
table.exec.async-lookup.buffer-capacity

Batch Streaming
100  async lookup join 可以觸發的最大 async i/o 操作的數量
table.exec.async-lookup.timeout

Batch Streaming
"3 min" 異步操作完成的 超時時間
table.exec.disabled-operators

Batch
(none)

主要用於測試. 以逗號分隔的運算符名稱列表,每個名稱代表一種禁用的運算符。

可以禁用的運算符包括“ NestedLoopJoin”,“ ShuffleHashJoin”,“ BroadcastHashJoin”,

“ SortMergeJoin”,“ HashAgg”,“ SortAgg”。 默認情況下,未禁用任何運算符.

table.exec.mini-batch.allow-latency

Streaming
"-1 ms"

最大等待時間可用於MiniBatch緩沖輸入記錄。 MiniBatch是用於緩沖輸入記錄以減少狀態訪問的優化。

MiniBatch以允許的等待時間間隔以及達到最大緩沖記錄數觸發。

注意:如果將table.exec.mini-batch.enabled設置為true,則其值必須大於零.

table.exec.mini-batch.enabled

Streaming
false

指定是否啟用MiniBatch優化。 MiniBatch是用於緩沖輸入記錄以減少狀態訪問的優化。

默認情況下禁用此功能。 要啟用此功能,用戶應將此配置設置為true。

注意:如果啟用了mini batch 處理,

則必須設置“ table.exec.mini-batch.allow-latency”和“ table.exec.mini-batch.size”.

table.exec.mini-batch.size

Streaming
-1

可以為MiniBatch緩沖最大輸入記錄數。 MiniBatch是用於緩沖輸入記錄以減少狀態訪問的優化。

MiniBatch以允許的等待時間間隔以及達到最大緩沖記錄數觸發。 注意:MiniBatch當前僅適用於非窗口聚合。

如果將table.exec.mini-batch.enabled設置為true,則其值必須為正.

table.exec.resource.default-parallelism

Batch Streaming
-1

為所有運算符(例如聚合,聯接,過濾器)設置默認並行度以與並行實例一起運行。

此配置比StreamExecutionEnvironment的並行性具有更高的優先級

(實際上,此配置優先於StreamExecutionEnvironment的並行性)。

值-1表示未設置默認的並行性,則使用StreamExecutionEnvironment的並行性將回退.

table.exec.resource.external-buffer-memory

Batch
"10 mb" 設置在排序合並聯接和嵌套聯接以及窗口上使用的外部緩沖存儲器大小.
table.exec.resource.hash-agg.memory

Batch
"128 mb" 設置哈希聚合運算符的托管內存大小.
table.exec.resource.hash-join.memory

Batch
"128 mb" 設置哈希聯接運算符的托管內存。 定義下限.
table.exec.resource.sort.memory

Batch
"128 mb" 設置排序運算符的托管緩沖區內存大小.
table.exec.shuffle-mode

Batch
"batch"

設置執行 shuffle 模式。 只能設置 batch 或 pipeline。 batch:工作將逐步進行。

pipeline:作業將以流模式運行,但是當發送方擁有資源等待將數據發送到接收方時,

接收方等待資源啟動可能會導致資源死鎖.

table.exec.sort.async-merge-enabled

Batch
true 是否異步合並排序的溢出文件.
table.exec.sort.default-limit

Batch
-1 用戶 order 后未設置限制時的默認限制。 -1表示此配置被忽略.
table.exec.sort.max-num-file-handles

Batch
128

外部合並排序的最大扇入。 它限制了每個運算符的文件句柄數。

如果太小,可能會導致中間合並。

但是,如果太大,將導致同時打開太多文件,占用內存並導致隨機讀取.

table.exec.source.idle-timeout

Streaming
"-1 ms"

當 source 在超時時間內未收到任何元素時,它將被標記為臨時空閑。

這樣,下游任務就可以前進其水印,而無需在空閑時等待來自該源的水印.

table.exec.spill-compression.block-size

Batch
"64 kb"

溢出數據時用於壓縮的內存大小。

內存越大,壓縮率越高,但是作業將消耗更多的內存資源.

table.exec.spill-compression.enabled

Batch
true

是否壓縮溢出的數據。

目前,我們僅支持對sort和hash-agg和hash-join運算符壓縮溢出的數據.

table.exec.window-agg.buffer-size-limit

Batch
100000 設置組窗口agg運算符中使用的窗口元素緩沖區大小限制。

 

優化器選項 

以下選項可用於調整查詢優化器的行為,以獲得更好的執行計划。 

 

Key Default Description
table.optimizer.agg-phase-strategy

Batch Streaming
"AUTO"

匯總階段的策略。 只能設置AUTO,TWO_PHASE或ONE_PHASE。

自動:聚合階段沒有特殊的執行器。

選擇兩階段匯總還是一階段匯總取決於成本。 TWO_PHASE:強制使用具有localAggregate和globalAggregate的兩階段聚合。

請注意,如果聚合調用不支持分為兩階段的優化,我們仍將使用一級聚合。

ONE_PHASE:強制使用僅具有CompleteGlobalAggregate的一級聚合.

table.optimizer.distinct-agg.split.bucket-num

Streaming
1024

拆分獨立聚合時配置存儲桶數。

該數字在第一級聚合中用於計算存儲區密鑰“ hash_code(distinct_key)%BUCKET_NUM”,該存儲區密鑰在拆分后用作附加組密鑰.

table.optimizer.distinct-agg.split.enabled

Streaming
false

告訴優化程序是否將不同的聚合(例如COUNT(DISTINCT col),SUM(DISTINCT col))分成兩個級別。

第一次聚合被一個附加 key shuffle,該附加 key 使用distinct_key的哈希碼和存儲桶數計算得出。

當不同的聚合中存在數據傾斜時,此優化非常有用,並且可以擴大工作量。 默認為false.

table.optimizer.join-reorder-enabled

Batch Streaming
false 在優化器中啟用聯接重新排序。 默認為禁用.
table.optimizer.join.broadcast-threshold

Batch
1048576

配置表的最大大小(以字節為單位),該表在執行聯接時將廣播到所有工作程序節點。

通過將此值設置為-1以禁用廣播.

table.optimizer.reuse-source-enabled

Batch Streaming
true

如果為true,則優化器將嘗試找出重復的表源並重新使用它們。

僅當啟用table.optimizer.reuse-sub-plan為true時,此方法才有效.

table.optimizer.reuse-sub-plan-enabled

Batch Streaming
true 當為 true 時,優化器將嘗試找出重復的子計划並重用它們。
table.optimizer.source.predicate-pushdown-enabled

Batch Streaming
true 如果為true,則優化器會將謂詞下推到FilterableTableSource中。 默認值為true.

 

歡迎關注Flink菜鳥公眾號,會不定期更新Flink(開發技術)相關的推文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM