參數 | 說明 | 資料類型 | 是否必填 | 預設值 | 備忘 |
sdkMode | SDK模式。 | String | 否 | jdbc | 參數取值如下: jdbc:預設值,表示使用jdbc模式進行寫入。 jdbc_copy:是否使用fixed copy方式寫入。 fixed copy是hologres1.3新增的能力,相比通過insert方法(jdbc模式)進行寫入,fixed copy方式可以更高的吞吐(因為是流模式),更低的資料延時,更低的用戶端記憶體消耗(因為不攢批)。但此模式暫不支援delete資料,也不支援寫入分區父表,不支援ignoreNullWhenUpdate參數。 rpc:表示使用rpc模式進行寫入,與useRpcMode參數一致,與jdbc模式的區別在於不佔用串連數,並且不支援寫入Hologres的JSONB、RoarinBitmap類型。 jdbc_fixed(beta功能):表示使用fixed jdbc方式進行寫入, 需要Hologres引擎版本大於等於1.3,與jdbc模式的區別在於不佔用串連數,不支援寫入Hologres的Jsonb,RoarinBitmap類型。目前此模式暫不支援寫入開啟資料脫敏功能的database,詳情請參見資料脫敏。
版本推薦參數如下: VVR 6.0.3以下版本:不支援配置該參數。 VVR 6.0.4及以上版本:推薦配置為jdbc。 說明 VVR 6.0.7~VVR 8.0.1版本: 如果Hologres執行個體為2.0以下版本,Flink系統採用您配置的參數值。 如果Hologres執行個體為2.0及以上版本,由於Hologres 2.0及以上版本下線了rpc服務,此時如果您將該參數配置為rpc,Flink系統將自動切換該參數值為jdbc_fixed,但是如果您配置為其他值,Flink系統將採用您配置的參數值。 rpc模式不會對同一批次中相同主鍵的資料做去重,如果業務情境需要保留完整的資料,切換為jdbc模式後,可以通過設定'jdbcWriteBatchSize'='1'防止去重。
VVR 8.0.3及以上版本
|
bulkload | 是否採用bulkload寫入。 | Boolean | 否 | false | 僅在sdkMode設定為jdbc_copy時生效。bulkload寫入目前僅適用於無主鍵表或者主鍵保證不重複的有主鍵表(主鍵重複會拋出異常),相比預設的jdbc_copy,寫入使用更少的Hologres資源。 說明 僅Realtime Compute引擎VVR 8.0.5及以上版本且Hologres執行個體為2.1及以上版本支援該參數。 |
useRpcMode | 是否通過RPC方式使用Hologres連接器。 | Boolean | 否 | false | 參數取值如下: true:使用RPC方式使用Hologres連接器。 與sdkMode參數設定為rpc效果相同,通過RPC方式會降低SQL串連數。 false(預設值):使用JDBC方式使用Hologres連接器。 通過JDBC方式會佔用SQL串連,導致JDBC串連數增加。
說明 Hologres 2.0版本下線了rpc模式,推薦使用sdkMode參數來選擇jdbc或者jdbc_fixed模式。 Realtime Compute引擎VVR 6.0.7及VVR 8.0.1版本在檢測到Hologres執行個體是2.0及以上版本時,會自動切換rpc模式為jdbc_fixed模式。 Realtime Compute引擎VVR 8.0.3及以上版本會自動切換rpc模式為jdbc_fixed模式。 rpc模式不會對同一批次中相同主鍵的資料做去重,如果業務情境需要保留完整的資料變化記錄,推薦使用Realtime Compute引擎VVR 8.0.5及以上版本,jdbc模式可以配置deduplication.enabled參數為false不進行去重。 property-version=1時,該參數下線。
|
mutatetype | 資料寫入模式。 | String | 否 | insertorignore | 詳情請參見流式語義。 說明 Realtime Compute引擎VVR 8.0.6及以上版本支援多版本預設值。 |
partitionrouter | 是否寫入分區表。 | Boolean | 否 | false | 無。 |
createparttable | 當寫入分區表時,是否根據分區值自動建立不存在的分區表。 | Boolean | 否 | false | RPC模式下,如果分區值中存在短劃線(-),暫不支援自動建立分區表。 說明 Hologres執行個體1.3.22及以上版本開始支援使用Date類型做分區鍵。Realtime Compute引擎VVR 8.0.3及以上版本,支援使用Date類型做分區鍵時自動建立分區表。 請確保分區值不會出現髒資料,否則會建立錯誤的分區表導致Failover,建議慎用該參數。 當sdk_mode設定為jdbc_copy時,不支援寫入分區父表。
|
ignoredelete | 是否忽略撤回訊息。 | Boolean | 否 | true | |
sink.delete-strategy | 撤回訊息的處理策略。 | String | 否 | 無 | 參數取值如下: IGNORE_DELETE:忽略Update Before和Delete訊息。適用於僅需插入或更新資料,而無需刪除資料的情境。 NON_PK_FIELD_TO_NULL:忽略Update Before訊息,並將Delete訊息執行為將非主鍵欄位更新為null。適用於希望在局部更新操作中執行刪除操作而不影響其他列的情境。 DELETE_ROW_ON_PK:忽略Update Before訊息,並將Delete訊息執行為根據主鍵刪除整行。適用於在局部更新過程中,希望執行刪除整行操作,從而影響其他列的情境。 CHANGELOG_STANDARD:Flink架構按照 Flink SQL Changelog的工作原理運行,不忽略刪除操作,並通過先刪除資料再插入的方式執行更新操作,以確保資料準確性。適用於不涉及局部更新的情境。
|
connectionSize | 單個Flink結果表任務所建立的JDBC串連池大小。 | Integer | 否 | 3 | 如果作業效能不足,建議您增加串連池大小。串連池大小和資料吞吐成正比。 |
jdbcWriteBatchSize | JDBC模式,Hologres Sink節點資料攢批條數(不是來一條資料處理一條,而是攢一批再處理)的最大值。 | Integer | 否 | 256 | 單位為資料行數。 說明 jdbcWriteBatchSize、jdbcWriteBatchByteSize和jdbcWriteFlushInterval三者之間為或的關係。如果同時設定了這三個參數,則滿足其中一個,就進行寫入結果資料。 |
jdbcWriteBatchByteSize | JDBC模式,Hologres Sink節點資料攢批位元組數(不是來一條資料處理一條,而是攢一批再處理)的最大值。 | Long | 否 | 2097152(2*1024*1024)位元組,即2 MB | 說明 jdbcWriteBatchSize、jdbcWriteBatchByteSize和jdbcWriteFlushInterval三者之間為或的關係。如果同時設定了這三個參數,則滿足其中一個,就進行寫入結果資料。 |
jdbcWriteFlushInterval | JDBC模式,Hologres Sink節點資料攢批寫入Hologres的最長等待時間。 | Long | 否 | 10000 | 單位為毫秒。 說明 jdbcWriteBatchSize、jdbcWriteBatchByteSize和jdbcWriteFlushInterval三者之間為或的關係。如果同時設定了這三個參數,則滿足其中一個,就進行寫入結果資料。 |
ignoreNullWhenUpdate | 當mutatetype='insertOrUpdate'時,是否忽略更新寫入資料中的Null值。 | Boolean | 否 | false | 取值說明如下: |
connectionPoolName | 串連池名稱。同一個TaskManager中,配置相同名稱的串連池的表可以共用串連池。 | String | 否 | 無 | 取值為非'default' 的任一字元串。如果多個表設定相同的串連池,則這些使用相同串連池的表的connectionSize參數也需要相同。 說明 VVR 4.0.12以下版本:不支援配置該參數。 VVR 4.0.12~VVR 8.0.3版本:預設不共用,每個表使用自己的串連池。 VVR 8.0.4以上版本:同一個作業中endpoint相同的表會預設共用串連池。作業中表數量較多時串連數可能相對不足影響效能,這種情況下推薦為不同的表設定不同的connectionPoolName。 此參數可以按需配置,比如作業中有維表A,B以及結果表C,D,E五張hologres表,可以A表和B表使用'pool1',C表和D表使用'pool2',E表流量較大,單獨使用'pool3'。
|
jdbcEnableDefaultForNotNullColumn | 如果將Null值寫入Hologres表中Not Null且無預設值的欄位,是否允許連接器協助填充一個預設值。 | Boolean | 否 | true | 參數取值如下: |
remove-u0000-in-text.enabled | 如果寫入時字串類型包含\u0000非法字元,是否允許連接器協助去除。 | Boolean | 否 | false | 參數取值如下: 重要 Realtime Compute引擎VVR 8.0.1及以上版本,僅sdkMode='jdbc' 情境下支援該參數。 Realtime Compute引擎VVR 8.0.8及以上版本,僅sdkMode='jdbc_copy' 或sdkMode='jdbc' 情境下支援該參數。 如資料中包含aaa\00bbb 類型,開啟該參數可能導致資料無法匹配的情況,請根據業務資料具體情況,謹慎使用。
|
partial-insert.enabled | 是否只插入INSERT語句中定義的欄位。 | Boolean | 否 | false | 參數取值如下: |
deduplication.enabled | jdbc及jdbc_fixed模式寫入攢批過程中,是否進行去重。 | Boolean | 否 | true | 參數取值如下: |
check-and-put.column | 啟用條件更新能力,並指定檢查的欄位名。 | String | 否 | 無 | 參數取值必須設定為Hologres表存在的欄位名。 重要 僅Realtime Compute引擎VVR 8.0.11及以上版本支援該參數。 僅sdkMode 配置為jdbc_fixed 或jdbc 情境下支援該參數。 結果表必須有主鍵, mutateType 參數值必須是Insertorupdate 或者insertorreplace 。 由於需要反查,建議結果表建立為行存表或者行列混存表。 在資料重複較多的情況下,check-and-put操作會退化為單條寫入,這將導致寫入效能的降低。
|
check-and-put.operator | 條件更新操作的比較操作符。 | String | 否 | GREATER | 比較新record的check欄位與表中舊值,符合條件判斷操作符時進行更新。目前支援配置為GREATER、GREATER_OR_EQUAL、EQUAL、NOT_EQUAL、LESS、LESS_OR_EQUAL、IS_NULL、IS_NOT_NULL。 說明 僅Realtime Compute引擎VVR 8.0.11及以上版本支援該參數。 |
check-and-put.null-as | 當條件更新時,如果舊資料為null,則將該null值視為此參數配置的有效值。 | String | 否 | 無 | 由於在PostgreSQL中,任何值與NULL進行比較的結果均為FALSE,因此當表中的原有資料為NULL時,進行更新操作時需要設定一個NULL-AS作為參數,相當於SQL中的COALESCE函數。 說明 僅Realtime Compute引擎VVR 8.0.11及以上版本支援該參數。 |
aggressive.enabled | 是否啟用激進提交模式。 | Boolean | 否 | false | 設定為true時,即便攢批未達到預期條數,串連在空閑時將會被強制提交。在流量較小時,可以有效減少資料寫入的延時。 |