Apache Paimon 核心配置參數詳解(五)
接上文:
- 《Apache Paimon 核心配置參數詳解(一)》
- 《Apache Paimon 核心配置參數詳解(二)》
- 《Apache Paimon 核心配置參數詳解(三)》
- 《Apache Paimon 核心配置參數詳解(四)》
Paimon作為一種流批統一的存儲系統,提供了豐富的參數配置選項,使用戶能夠根據具體需求調整系統行為。本文將詳細介紹Paimon的關鍵參數,并提供相應的SQL配置示例,幫助您更好地理解和應用這些參數。

一、消費者相關參數
1. consumer-id
功能說明:consumer-id是用于在存儲中記錄消費偏移量的消費者標識符。它實現了兩個核心功能:
- 安全消費:在決定快照是否過期時,Paimon會檢查所有消費者,如果有消費者仍依賴該快照,則該快照不會被過期刪除。
- 斷點續傳:當之前的作業停止后,新啟動的作業可以從之前的進度繼續消費。
SQL配置示例:
-- 創建表時設置consumer-id
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'consumer-id' = 'my-job-consumer'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('consumer-id' = 'my-job-consumer');2. consumer.expiration-time
功能說明:此參數定義了消費者文件的過期間隔。如果消費者文件最后修改后的生存時間超過此值,該消費者文件將過期。這有助于清理不再活躍的消費者記錄,防止元數據無限增長。
SQL配置示例:
-- 設置消費者文件過期時間為24小時
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'consumer-id' = 'my-job-consumer',
'consumer.expiration-time' = '24 h'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('consumer.expiration-time' = '7 d');3. consumer.ignore-progress
功能說明:此參數決定是否忽略新啟動作業的消費者進度。默認值為false。當您只想要"安全消費"功能,而在重啟流消費作業時希望獲得新的快照進度時,可以啟用此選項。
SQL配置示例:
-- 設置忽略消費者進度
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'consumer-id' = 'my-job-consumer',
'consumer.ignore-progress' = 'true'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('consumer.ignore-progress' = 'true');4. consumer.mode
功能說明:此參數指定表的消費者一致性模式,默認值為EXACTLY_ONCE。默認情況下,快照的消費在檢查點內嚴格對齊以實現"斷點續傳"功能的精確一次性。但在某些不需要嚴格"斷點續傳"的場景中,可以考慮啟用'at-least-once'模式以提高性能。
SQL配置示例:
-- 設置消費者模式為AT_LEAST_ONCE
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'consumer-id' = 'my-job-consumer',
'consumer.mode' = 'AT_LEAST_ONCE'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('consumer.mode' = 'EXACTLY_ONCE');二、連續發現參數
1. continuous.discovery-interval
功能說明:此參數定義了連續讀取的發現間隔,默認值為10秒。它控制Paimon在連續模式下檢查新數據的時間間隔,較短的間隔可以降低延遲,但會增加系統負載。
SQL配置示例:
-- 設置連續發現間隔為5秒
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'continuous.discovery-interval' = '5 s'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('continuous.discovery-interval' = '30 s');三、跨分區Upsert參數
1. cross-partition-upsert.bootstrap-parallelism
功能說明:此參數定義了跨分區upsert單個任務中引導的并行度,默認值為10。當執行跨分區的upsert操作時(主鍵不包含所有分區字段),此參數控制初始化階段的并行度,影響處理速度。
SQL配置示例:
-- 設置跨分區upsert引導并行度為20
CREATE TABLE my_table (
id BIGINT,
name STRING,
dt STRING,
PRIMARY KEY (id) NOT ENFORCED
) PARTITIONED BY (dt) WITH (
'connector' = 'paimon',
'cross-partition-upsert.bootstrap-parallelism' = '20'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('cross-partition-upsert.bootstrap-parallelism' = '15');2. cross-partition-upsert.index-ttl
功能說明:此參數定義了跨分區upsert在rocksdb索引中的TTL(生存時間)。這可以避免維護太多索引導致性能越來越差,但請注意這也可能導致數據重復。當主鍵不包含所有分區字段時,此參數尤為重要。
SQL配置示例:
-- 設置跨分區upsert索引TTL為1小時
CREATE TABLE my_table (
id BIGINT,
name STRING,
dt STRING,
PRIMARY KEY (id) NOT ENFORCED
) PARTITIONED BY (dt) WITH (
'connector' = 'paimon',
'cross-partition-upsert.index-ttl' = '1 h'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('cross-partition-upsert.index-ttl' = '2 h');四、數據文件相關參數
1. data-file.external-paths
功能說明:此參數定義了表數據將被寫入的外部路徑,多個元素用逗號分隔。這允許將數據文件分布在多個存儲系統或位置,提高數據可靠性和訪問性能。
SQL配置示例:
-- 設置多個外部路徑
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'data-file.external-paths' = 's3://bucket1/path1,s3://bucket2/path2'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('data-file.external-paths' = 'oss://bucket/path,hdfs://namenode/path');2. data-file.external-paths.strategy
功能說明:此參數定義了寫入數據時選擇外部路徑的策略,默認值為NONE。它控制Paimon如何選擇使用哪個外部路徑來存儲數據文件。
SQL配置示例:
-- 設置外部路徑選擇策略為輪詢
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'data-file.external-paths' = 's3://bucket1/path1,s3://bucket2/path2',
'data-file.external-paths.strategy' = 'ROUND_ROBIN'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('data-file.external-paths.strategy' = 'SPECIFIC_FS');3. data-file.external-paths.specific-fs
功能說明:當data-file.external-paths.strategy設置為SPECIFIC_FS時,此參數定義了外部路徑的特定文件系統,應該是外部路徑的前綴方案,目前支持s3和oss。
SQL配置示例:
-- 設置特定文件系統為s3
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'data-file.external-paths' = 's3://bucket1/path1,oss://bucket2/path2',
'data-file.external-paths.strategy' = 'SPECIFIC_FS',
'data-file.external-paths.specific-fs' = 's3'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('data-file.external-paths.specific-fs' = 'oss');4. data-file.path-directory
功能說明:此參數指定數據文件的路徑目錄,允許用戶自定義數據文件在存儲系統中的存放位置。
SQL配置示例:
-- 設置數據文件路徑目錄
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'data-file.path-directory' = 'custom/data/location'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('data-file.path-directory' = 'new/data/location');5. data-file.prefix
功能說明:此參數指定數據文件的文件名前綴,默認值為"data-"。通過自定義前綴,可以更容易地識別和管理不同表或不同用途的數據文件。
SQL配置示例:
-- 設置數據文件前綴
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'data-file.prefix' = 'my-table-data-'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('data-file.prefix' = 'order-data-');6. data-file.thin-mode
功能說明:此參數用于啟用數據文件精簡模式以避免重復列存儲,默認值為false。啟用此模式后,對于主鍵表,文件將不再包含重復的主鍵列,從而減少存儲空間。
SQL配置示例:
-- 啟用數據文件精簡模式
CREATE TABLE my_table (
id BIGINT,
name STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'paimon',
'data-file.thin-mode' = 'true'
);
-- 或者通過ALTER TABLE修改
ALTER TABLE my_table SET ('data-file.thin-mode' = 'true');五、總結
Paimon提供了豐富的參數配置選項,使用戶能夠根據具體需求調整系統行為。通過合理配置這些參數,可以優化存儲效率、提高查詢性能、確保數據一致性,并滿足各種業務場景的需求。在實際應用中,建議根據業務特點和系統環境,對這些參數進行適當的調整和優化,以達到最佳效果。



























