關於VVR 11及以上版本的With參數說明。
版本參數移除說明
為最佳化系統架構、提升維護效率,對VVR 8及以下版本中的部分歷史參數進行了調整與移除。您可以根據下方不同的列表,查詢已經移除的歷史版本參數與相應的替代方案。
WITH參數
通用
參數 | 說明 | 資料類型 | 是否必填 | 預設值 | 備忘 |
connector | 表類型。 | String | 是 | 無 | 固定值為 |
dbname | 資料庫名稱。 | String | 是 | 無 | 可以通過在dbname參數後添加特定的尾碼來指定串連某個計算群組。例如某張維表希望串連特定的計算群組read_warehouse,可以通過 |
tablename | 表名稱。 | String | 是 | 無 | 如果Schema不為Public時,則tablename需要填寫為 |
username |
| String | 是 | 無 |
重要 為了避免您的AK資訊泄露,建議您使用變數的方式填寫AccessKey取值,詳情請參見專案變數。 |
password |
| String | 是 | 無 | |
endpoint | Hologres服務地址。 | String | 是 | 無 | 詳情請參見訪問網域名稱。 |
connection.pool.size | 單個Flink 表在任務中所建立的JDBC串連池大小。 | Integer | 否 | 5 | 如果作業效能不足,建議您增加串連池大小。串連池大小和資料吞吐成正比。此參數僅對維表和結果表生效。 |
connection.pool.name | 串連池名稱。同一個TaskManager中,配置相同名稱的串連池的表可以共用串連池。 | String | 否 |
| 預設取值為 您可以按需配置此參數,例如作業中有維表A,B以及結果表C,D,E五張hologres表,可以A表和B表使用pool1,C表和D表使用pool2,E表流量較大,單獨使用pool3。 說明
|
connection.fixed.enabled | 是否使用輕量級串連模式 | Boolean | 否 | 無 | Hologres 的串連數是有上限的,在 Hologres2.1 版本起,即時寫入支援使用不受串連數限制的輕量級串連。 說明
|
connection.max-idle-ms | JDBC串連的空閑時間。 | Long | 否 | 60000 | 超過這個空閑時間,串連就會斷開釋放掉,下次使用時自動建立。單位為毫秒。 |
connection.ssl.mode | 是否啟用SSL(Secure Sockets Layer)傳輸加密,以及啟用採用何種模式。 | String | 否 | disable |
說明
|
connection.ssl.root-cert.location | 當傳輸加密模式需要認證時,配置認證的路徑。 | String | 否 | 無 | 當connection.ssl.mode配置為verify-ca或者verify-full時,需要同時配置CA認證的路徑。認證可以使用Realtime Compute控制台的檔案管理功能上傳至平台,上傳後檔案存放在/flink/usrlib目錄下。例如,需要使用的CA認證檔案名稱為certificate.crt,則上傳後參數取值應該為 說明 CA認證擷取方式見傳輸加密-下載CA認證。 |
retry-count | 當串連故障時,寫入和查詢的重試次數。 | Integer | 否 | 10 | 無。 |
retry-sleep-step-ms | 每次重試時遞增的等待時間。 | Long | 否 | 5000 | 單位為毫秒。例如,預設值 5000(即 5 秒)時,第一次重試等待 5 秒,第二次等待 10 秒,依此類推。 |
meta-cache-ttl-ms | 本機快取TableSchema資訊的到期時間。 | Long | 否 | 600000 | 單位為毫秒。 |
serverless-computing.enabled | 是否使用serverless資源 | Boolean | 否 | false | 設定為true時,表示使用Hologres的serverless資源來進行讀取和寫入,而不是使用者Hologres執行個體的資源。目前僅批量讀取和大量匯入支援此參數。消費Binlog、維表點查和即時寫入配置此參數無效。目前詳見Serverless Computing概述。 說明
說明 若需要執行大規模全量匯入或匯出,且希望避免影響Hologres執行個體上的其他查詢,建議開啟此參數,詳見Serverless Computing概述。 |
源表專屬
參數 | 說明 | 資料類型 | 是否必填 | 預設值 | 備忘 |
source.binlog | 是否消費Binlog資料。 | Boolean | 否 | true |
|
source.binlog.read-mode | 讀模數式。 | ENUM | 否 | AUTO |
說明 AUTO 模式的自動選擇邏輯如下:
|
source.binlog.change-log-mode | CDC 源表支援的ChangeLog 類型 | ENUM | 否 | UPSERT |
說明 如果下遊包含回撤運算元(例如使用ROW_NUMBER OVER WINDOW去重),則需要設定upsertSource為true,此時源表會以Upsert方式從Hologres中讀取資料。 |
source.binlog.startup-mode | Binlog資料消費模式。 | ENUM | 否 | INITIAL |
說明 如果設定了startTime或者在啟動介面選擇了啟動時間,則binlogStartupMode強制使用timestamp模式,其他消費模式不生效,即startTime參數優先順序更高。 |
source.binlog.batch-size | 讀取Binlog的資料每批的行數。 | Integer | 否 | 512 | 無。 |
source.binlog.request-timeout-ms | 讀取Binlog資料逾時等待時間。 | Long | 否 | 300000 | 單位為毫秒。 說明 如果發生timeout,可能的原因是作業下遊運算元處理源表資料太慢導致反壓。 |
source.binlog.project-columns.enabled | 讀取binlog資料時,是否唯讀取使用者表指定的欄位。 | Boolean | 否 | 無 | 指定的欄位是指 說明 僅Realtime Compute引擎VVR 11.3及以上版本,同時Hologres執行個體3.2及以上版本支援該參數。一般無需配置,連接器判斷版本滿足預設開啟。 |
source.binlog.compression.enabled | 讀取binlog資料時,是否在傳輸過程中啟用資料壓縮。 | Boolean | 否 | 無 | 消費Binlog時,服務端返回通過LZ4演算法壓縮後的位元組流,可以提高讀取效能,節省頻寬。 說明 僅Realtime Compute引擎VVR 11.3及以上版本,同時Hologres執行個體3.2及以上版本支援該參數。一般無需配置,連接器判斷版本滿足預設開啟。 |
source.binlog.partition-binlog-mode | 消費分區表Binlog模式。 | Enum | 否 | DISABLE |
|
source.binlog.partition-binlog-lateness-timeout-minutes | 在DYNAMIC模式下消費分區表,允許延遲的最大逾時時間。 | Boolean | 否 | 60 |
例如:如果動態分區以DAY為單位,分區是20240920,允許資料最大延遲是1小時,對於這個分區,其消費會在2024-09-21 01:00:00關閉,而不是在2024-09-21 00:00:00停止消費。
如果按天分區,其最大值為24 * 60 = 1440(min),DYNAMIC模式大多數時間只會同時消費一張表,在延遲時間內可能同時消費兩個分區。 |
source.binlog.partition-values-to-read | 在STATIC模式下消費分區表,指定所需消費的分區,分區值之間使用','進行分隔。 | String | 否 | 無 |
|
startTime | 啟動位點的時間。 | String | 否 | 無 | 格式為yyyy-MM-dd hh:mm:ss。如果沒有設定該參數,且作業沒有從State恢複,則從最早的Binlog開始消費Hologres資料。 |
source.scan.fetch-size | 批量讀取時攢批大小。 | Integer | 否 | 512 | 無。 |
source.scan.timeout-seconds | 批量讀取時逾時時間。 | Integer | 否 | 60 | 單位為秒。 |
source.scan.filter-push-down.enabled | 批量讀取是否進行filter下推。 | Boolean | 否 | false |
說明
|
source.binlog.filter-push-down.enabled | 消費binlog是否進行filter下推。 | Boolean | 否 | false |
說明
|
scan.prefer.physical-column.over.metadata-column | 在物理列和中繼資料列重名時,是否優先讀取物理列的資料。 | Boolean | 否 | false | 僅Realtime Compute引擎VVR 11.5及更高版本支援此配置。較早版本總是優先讀取中繼資料列。 |
結果表專屬
參數 | 說明 | 資料類型 | 是否必填 | 預設值 | 備忘 |
sink.write-mode | 寫入模式。 | ENUM | 否 | INSERT |
說明
|
sink.on-conflict-action | 主鍵衝突處理策略。 | ENUM | 否 | INSERT_OR_UPDATE |
|
sink.create-missing-partition | 當寫入分區表時,是否根據分區值自動建立不存在的分區表。 | Boolean | 否 | false |
|
sink.delete-strategy | 撤回訊息的處理策略。 | String | 否 | CHANGELOG_STANDARD |
說明 啟用NON_PK_FIELD_TO_NULL選項可能會導致記錄中只有主鍵,其他所有列都為null。 |
sink.ignore-null-when-update.enabled | 當sink.on-conflict-action='INSERT_OR_UPDATE'時,是否忽略更新寫入資料中的Null值。 | Boolean | 否 | false |
說明 僅 |
sink.ignore-null-when-update-by-expr.enabled | 當sink.on-conflict-action='INSERT_OR_UPDATE'時,是否用運算式方式忽略更新寫入資料中的Null值。 | Boolean | 否 | false | 效能優於sink.ignore-null-when-update.enabled。
說明
|
sink.default-for-not-null-column.enabled | 如果將Null值寫入Hologres表中Not Null且無預設值的欄位,是否允許連接器協助填充一個預設值。 | Boolean | 否 | true |
說明 僅 |
sink.remove-u0000-in-text.enabled | 如果寫入時字串類型包含\u0000非法字元,是否允許連接器協助去除。 | Boolean | 否 | true |
|
sink.partial-insert.enabled | 是否只插入INSERT語句中定義的欄位。 | Boolean | 否 | false |
說明
|
sink.deduplication.enabled | 寫入攢批過程中,是否進行去重。 | Boolean | 否 | true |
說明
|
sink.aggressive-flush.enabled | 是否啟用激進提交模式。 | Boolean | 否 | false | 設定為true時,即便攢批未達到預期條數,串連在空閑時將會被強制提交。在流量較小時,可以有效減少資料寫入的延時。 說明 僅 |
sink.insert.check-and-put.column | 啟用條件更新能力,並指定檢查的欄位名。 | String | 否 | 無 | 參數取值必須設定為Hologres表存在的欄位名。 重要
|
sink.insert.check-and-put.operator | 條件更新操作的比較操作符。 | String | 否 | GREATER | 比較新record的check欄位與表中舊值,符合條件判斷操作符時進行更新。目前支援配置為GREATER、GREATER_OR_EQUAL、EQUAL、NOT_EQUAL、LESS、LESS_OR_EQUAL、IS_NULL、IS_NOT_NULL。 |
sink.insert.check-and-put.null-as | 當條件更新時,如果舊資料為null,則將該null值視為此參數配置的有效值。 | String | 否 | 無 | 由於在PostgreSQL中,任何值與NULL進行比較的結果均為FALSE,因此當表中的原有資料為NULL時,進行更新操作時需要設定一個NULL-AS作為參數,相當於SQL中的COALESCE函數。 |
sink.insert.batch-size | INSERT模式,Hologres Sink節點資料攢批條數(不是來一條資料處理一條,而是攢一批再處理)的最大值。 | Integer | 否 | 512 |
|
sink.insert.batch-byte-size | INSERT模式,Hologres Sink節點資料攢批位元組數(不是來一條資料處理一條,而是攢一批再處理)的最大值。 | Long | 否 | 2*1024*1024位元組,即2 MB | |
sink.insert.flush-interval-ms | INSERT模式,Hologres Sink節點資料攢批寫入Hologres的最長等待時間。 | Long | 否 | 10000 | |
sink.copy.format | COPY模式使用的傳輸格式 | String | 否 |
|
說明 僅 |
sink.insert.conflict-update-set | 主鍵衝突時更新的Hologres運算式 | String | 否 | 無 | 等價於insert into tbl values(xxx) on conflict(pk) do update set <conflict-update-set>,可填寫holo運算式/函數。 例如:該配置項值為col1=old.col1+excluded.col1,col2=excluded.col2時,表示當主鍵衝突時將col1的值更新為舊值與新值相加,col2更新為新值。
說明 僅 |
sink.insert.conflict-where | 主鍵衝突時觸發更新的Hologres過濾條件 | String | 否 | 無 | 等價於insert into tbl values(xxx) on conflict(pk) do update set <conflict-update-set> where <conflict-where>,可填寫holo運算式/函數。 例如: 該配置項值為excluded.col1>old.col1時,表示當主鍵衝突時,只有col1的新值大於舊值,才會觸發更新。 說明
|
維表專屬
參數 | 說明 | 資料類型 | 是否必填 | 預設值 | 備忘 |
lookup.read.batch-size | 點查Hologres維表時,攢批處理的最大條數。 | Integer | 否 | 256 | 無。 |
lookup.read.timeout-ms | 維表點查的逾時時間。 | Long | 否 | 預設值為0,表示不會逾時 | 無。 |
lookup.read.column-table.enabled | 是否使用列存表做維表 | Boolean | 否 | false | 使用列存表做維表時效能較差,推薦使用行存表或者行列混存表。 此參數開啟,且使用列存表時,會列印warn日誌提示。 |
lookup.insert-if-not-exists | 是否插入不存在的資料 | Boolean | 否 | false | 如果點查發現維表中不存在當前資料,則插入當前資料。 |
cache | 緩衝策略。 | String | 否 | None | Hologres僅支援None和LRU兩種緩衝策略。 |
cacheSize | 緩衝大小。 | Integer | 否 | 10000 | 選擇LRU緩衝策略後,可以設定緩衝大小。單位為條。 |
cacheTTLMs | 緩衝更新時間間隔。 | Long | 否 | 見備忘列。 | 單位為毫秒。cacheTTLMs預設值和cache的配置有關:
|
cacheEmpty | 是否緩衝join結果為空白的資料。 | Boolean | 否 | true |
重要 請根據實際業務情境決定是否啟用此開關。若您希望在作業運行時關聯新插入維表中的記錄,請關閉此選項,或是將 |
async | 是否非同步返回資料。 | Boolean | 否 | false |
說明 非同步返回資料是無序的。 |
lookup.filter-push-down.enabled | 是否將維表過濾條件下推到Hologres服務端。 | Boolean | 否 | false | 目前僅支援列與常量之間的比較運算,僅對等值運算子及大小比較子(如 <, <=, >, >=)執行下推操作。 說明 僅Realtime Compute引擎VVR 11.4及以上版本支援配置此參數。 |