全部產品
Search
文件中心

Realtime Compute for Apache Flink:參數配置(VVR 8及以下版本)

更新時間:Jun 06, 2025

本文是關於VVR 8.0.x及以下版本的With參數說明。

WITH參數

通用

參數

說明

資料類型

是否必填

預設值

備忘

connector

表類型。

String

固定值為hologres

dbname

資料庫名稱。

String

Hologres V2.0版本推出了全新的彈性高可用執行個體形態,將計算資源分解為不同的計算群組(Virtual Warehouse),更好的服務於高可用部署。不同的計算群組使用相同的Endpoint,您可以通過在dbname參數後添加特定的尾碼來指定串連某個計算群組。例如某張維表希望串連特定的計算群組read_warehouse,可以通過'dbname' = 'db_test@read_warehouse' 方式指定。

說明

僅JDBC相關模式支援使用計算群組,詳見源表、維表和結果表WITH參數中的sdkMode參數。

tablename

表名稱。

String

如果Schema不為Public時,則tablename需要填寫為schema.tableName

username

  • 自訂帳號的使用者名稱,格式為BASIC$<user_name>

  • 阿里雲帳號或RAM使用者的AccessKey ID。

String

重要

為了避免您的AK資訊泄露,建議您使用變數的方式填寫AccessKey取值,詳情請參見專案變數

password

  • 自訂帳號的密碼。

  • 阿里雲帳號或RAM使用者的AccessKey Secret。

String

endpoint

Hologres服務地址。

String

詳情請參見訪問網域名稱

connection.ssl.mode

是否啟用SSL(Secure Sockets Layer)傳輸加密,以及啟用採用何種模式。

String

disable

  • disable(預設值):不啟用傳輸加密。

  • require:啟用SSL,只對資料鏈路加密。

  • verify-ca:啟用SSL,加密資料鏈路,同時使用CA認證驗證Hologres服務端的真實性。

  • verify-full:啟用SSL,加密資料鏈路,使用CA認證驗證Hologres服務端的真實性,同時比對認證內的CN或DNS與串連時配置的Hologres串連地址是否一致。

說明
  • VVR 8.0.5及以上版本開始支援此參數。

  • Hologres自2.1版本起新增支援verify-ca和verify-full模式。詳見傳輸加密

  • 當配置為verify-ca或者verify-full時,需要同時配置connection.ssl.root-cert.location參數。

connection.ssl.root-cert.location

當傳輸加密模式需要認證時,配置認證的路徑。

String

當connection.ssl.mode配置為verify-ca或者verify-full時,需要同時配置CA認證的路徑。認證可以使用Realtime Compute控制台的檔案管理功能上傳至平台,上傳後檔案存放在/flink/usrlib目錄下。例如,需要使用的CA認證檔案名稱為certificate.crt,則上傳後參數取值應該為 '/flink/usrlib/certificate.crt'

說明

jdbcRetryCount

當串連故障時,寫入和查詢的重試次數。

Integer

10

無。

jdbcRetrySleepInitMs

每次重試的固定等待時間。

Long

1000

實際重試的等待時間的計算公式為jdbcRetrySleepInitMs+retry*jdbcRetrySleepStepMs。單位為毫秒。

jdbcRetrySleepStepMs

每次重試的累加等待時間。

Long

5000

實際重試的等待時間的計算公式為jdbcRetrySleepInitMs+retry*jdbcRetrySleepStepMs。單位為毫秒。

jdbcConnectionMaxIdleMs

JDBC串連的空閑時間。

Long

60000

超過這個空閑時間,串連就會斷開釋放掉。單位為毫秒。

jdbcMetaCacheTTL

本機快取TableSchema資訊的到期時間。

Long

60000

單位為毫秒。

jdbcMetaAutoRefreshFactor

如果緩衝的剩餘時間小於觸發時間,則系統會自動重新整理緩衝。

Integer

4

緩衝的剩餘時間計算方法:緩衝的剩餘時間=緩衝的到期時間 - 緩衝已經存活的時間。緩衝自動重新整理後,則從0開始重新計算緩衝的存活時間。

觸發時間計算方法:jdbcMetaCacheTTL/jdbcMetaAutoRefreshFactor兩個參數的比值。

type-mapping.timestamp-converting.legacy

Flink和Hologres之間是否進行時間類型的相互轉換。

Boolean

true

  • true:不進行相互轉換。時區轉換將採用運行環境中的JVM時區。

  • false(推薦):進行相互轉換。時區轉換將使用Flink所配置的時區。

說明
  • 僅Realtime Compute引擎VVR 8.0.6及以上版本支援該參數。

  • Flink和Hologres的時區詳情,請參見Flink與Hologres時區說明

  • property-version=0時,預設值為true;property-version=1時,預設值為false。

property-version

Connector參數版本。

Integer

0

可填的值為0和1,預設值為0。

說明
  • 僅VVR 8.0.6及以上版本支援配置該參數。

  • 在不同參數版本裡,可用的參數集合和參數的預設值可能不同。如果存在區別,區別詳情會在參數的說明部分描述。

  • 推薦使用參數版本1。

源表專屬

參數

說明

資料類型

是否必填

預設值

備忘

field_delimiter

匯出資料時,不同行之間使用的分隔字元。

String

"\u0002"

無。

binlog

是否消費Binlog資料。

Boolean

false

  • true:消費Binlog資料。

  • false(預設值):不消費Binlog資料。

說明
  • property-version=0時,預設值為false。

  • property-version=1時,預設值為true。

sdkMode

SDK模式。

String

holohub

  • holohub(預設值):使用holohub模式消費binlog。

  • jdbc:使用jdbc模式消費binlog。

  • jdbc_fixed: 使用fixed jdbc模式消費binlog,與jdbc模式的區別在於不受串連數限制。目前此模式暫不支援消費開啟資料脫敏功能的database的binlog,詳情請參見資料脫敏

各版本推薦取值詳情請參見注意事項

jdbcBinlogSlotName

JDBC模式的binlog源表的Slot名稱。

String

僅在sdkMode配置為jdbc時生效,如果使用者未配置,連接器會預設建立一個Slot來使用。詳見JDBC模式Binlog源表

說明

Hologres執行個體2.1版本起且使用VVR 8.0.5版本及以上,不再需要配置此參數,連接器也不會嘗試自動建立。

binlogMaxRetryTimes

讀取Binlog資料出錯後的重試次數。

Integer

60

無。

binlogRetryIntervalMs

讀取Binlog資料出錯後的重試時間間隔。

Long

2000

單位為毫秒。

binlogBatchReadSize

批量讀取Binlog的資料行數。

Integer

100

無。

cdcMode

是否採用CDC模式讀取Binlog資料。

Boolean

false

  • true:CDC模式讀取Binlog資料。

  • false(預設值):非CDC模式讀取Binlog資料。

說明
  • property-version=0時,預設值為false。

  • property-version=1時,預設值為true。

upsertSource

源表是否使用upsert類型的Changelog。

Boolean

false

僅在CDC模式下生效。

  • true:僅支援Upsert類型,包括INSERT、DELETE和UPDATE_AFTER。

  • false(預設值):支援所有類型,包括INSERT、DELETE、UPDATE_BEFORE和UPDATE_AFTER。

說明

如果下遊包含回撤運算元(例如使用ROW_NUMBER OVER WINDOW去重),則需要設定upsertSource為true,此時源表會以Upsert方式從Hologres中讀取資料。

binlogStartupMode

Binlog資料消費模式。

String

earliestOffset

  • initial:先全量消費資料,再讀取Binlog開始增量消費。

  • earliestOffset(預設值):從最早的Binlog開始消費。

  • timestamp:從設定的startTime開始消費Binlog。

說明

如果設定了startTime或者在啟動介面選擇了啟動時間,則binlogStartupMode強制使用timestamp模式,其他消費模式不生效,即startTime參數優先順序更高。

說明
  • property-version=0時,預設值為false。

  • property-version=1時,預設值為true。

startTime

啟動位點的時間。

String

格式為yyyy-MM-dd hh:mm:ss。如果沒有設定該參數,且作業沒有從State恢複,則從最早的Binlog開始消費Hologres資料。

jdbcScanFetchSize

掃描時攢批大小。

Integer

256

無。

jdbcScanTimeoutSeconds

掃描操作逾時時間。

Integer

60

單位為秒。

jdbcScanTransactionSessionTimeoutSeconds

掃描操作所在事務的逾時時間。

Integer

600秒(0表示不逾時)

對應Hologres的GUC參數idle_in_transaction_session_timeout,詳情請參見GUC參數

enable_filter_push_down

全量讀取階段是否進行filter下推。

Boolean

false

  • false(預設值):不進行filter下推。

  • true:讀取全量資料時,將支援的過濾條件下推到Hologres執行。包括非Binlog Source全量讀取以及Binlog Source使用全增量一體化消費模式時的全量階段。

    重要

    建議使用VVR 6.0.7及以上版本,在源表增加此參數來開啟過濾條件下推功能,提高整體效能。

partition-binlog.mode

消費分區表Binlog模式。

Enum

DISABLE

  • DISABLE(預設值):源表是非分區表,如果指定的Hologres表為分區表,將拋出異常。

  • DYNAMIC:持續消費分區表的最新分區。分區表必須開啟動態分區管理,DYNAMIC模式會按照從舊到新的順序消費各個分區。當消費到次新分區時,會在新的單位時間到來時,開啟最新分區的消費。

  • STATIC:消費分區表的固定分區,可同時消費多個分區。分區在消費過程中無法新增或移除。預設消費此父表的所有分區。

partition-binlog-lateness-timeout-minutes

在DYNAMIC模式下消費分區表,允許延遲的最大逾時時間。

Boolean

60

  • 單位為分鐘,DYNAMIC模式會在新的單位時間到來時開啟目前時間對應的最新分區的消費,但不會立刻關閉前一個分區,而是會持續監聽以保證可以讀取到上一個分區的延遲資料。

    例如:如果動態分區以DAY為單位,分區是20240920,允許資料最大延遲是1小時,對於這個分區,其消費會在2024-09-21 01:00:00關閉,而不是在2024-09-21 00:00:00停止消費。

  • lateness-timeout時間不允許超過分區的單位時間。

    如果按天分區,其最大值為24 * 60 = 1440(min),DYNAMIC模式大多數時間只會同時消費一張表,在延遲時間內可能同時消費兩個分區。

partition-values-to-read

在STATIC模式下消費分區表,指定所需消費的分區,分區值之間使用','進行分隔。

String

  • 不配置此參數時,STATIC模式會消費指定父表的所有分區,指定時則僅消費被指定的分區。

  • 此參數僅需要填寫分區值,不需要完整的分區名稱,多個分區值使用,分割。目前不支援通過Regex配置。

結果表專屬

參數

說明

資料類型

是否必填

預設值

備忘

sdkMode

SDK模式。

String

jdbc

  • jdbc:預設值,表示使用jdbc模式進行寫入。

  • jdbc_copy:是否使用fixed copy方式寫入。

    fixed copy是一種高效能的流式寫入方式,適用於對吞吐和延遲要求高的情境。但此模式暫不支援delete資料,也不支援寫入分區父表,不支援ignoreNullWhenUpdate參數。

  • rpc:表示使用rpc模式進行寫入。不支援寫入Hologres的JSONB、RoarinBitmap類型。

  • jdbc_fixed(beta功能):表示使用fixed jdbc方式進行寫入,

    與jdbc模式的區別在於不佔用串連數,不支援寫入Hologres的JSONB,RoarinBitmap類型。目前此模式暫不支援寫入開啟資料脫敏功能的database,詳情請參見資料脫敏

各版本推薦取值詳情請參見注意事項

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串連數增加。

說明
  • 該參數取值為true時與sdkMode=rpc同效,推薦操作詳情請參見注意事項

  • property-version=1時,該參數下線。

mutatetype

資料寫入模式。

String

insertorignore

  • insertorignore(預設值):保留首次出現的資料,忽略後續重複資料。

  • insertorreplace:後續資料整行替換已有資料。

  • insertorupdate:只更新sink中已提供的欄位,其他欄位保持不變。

    例如一張表有a、b、c和d四個欄位,a是主鍵,若結果表欄位僅提供a和b兩個欄位,在主鍵重複的情況下,系統只會更新b欄位,c和d保持不變。

說明
  • property-version=0時,預設值為insertorignore。

  • property-version=1時,預設值為insertorupdate。

partitionrouter

是否寫入分區表。

Boolean

false

無。

createparttable

當寫入分區表時,是否根據分區值自動建立不存在的分區表。

Boolean

false

RPC模式下,如果分區值中存在短劃線(-),暫不支援自動建立分區表。

說明
  • Realtime Compute引擎VVR 8.0.3及以上版本,支援使用Date類型做分區鍵時自動建立分區表。

  • 請確保分區值不會出現髒資料,否則會建立錯誤的分區表導致Failover,建議慎用該參數。

  • 當sdk_mode設定為jdbc_copy時,不支援寫入分區父表。

ignoredelete

是否忽略撤回訊息。

Boolean

true

說明
  • 僅在mutatetype參數為insertorupdate時生效。

  • Realtime Compute引擎VVR 8.0.8及以上版本推薦使用sink.delete-strategy參數替換該參數。兩個參數同時配置時,只有sink.delete-strategy參數生效。

  • property-version=0時,預設值為true。

  • property-version=1時,預設值為false。

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的工作原理運行,不忽略刪除操作,並通過先刪除資料再插入的方式執行更新操作,以確保資料準確性。適用於不涉及局部更新的情境

說明
  • 僅Realtime Compute引擎VVR 8.0.8及以上版本支援該參數。

  • 啟用NON_PK_FIELD_TO_NULL選項可能會導致記錄中只有主鍵,其他所有列都為null。

connectionSize

單個Flink結果表任務所建立的JDBC串連池大小。

Integer

3

如果作業效能不足,建議您增加串連池大小。串連池大小和資料吞吐成正比。

jdbcWriteBatchSize

JDBC模式,Hologres Sink節點資料攢批條數(不是來一條資料處理一條,而是攢一批再處理)的最大值。

Integer

256

單位為資料行數。

說明

jdbcWriteBatchSizejdbcWriteBatchByteSizejdbcWriteFlushInterval三者之間為或的關係。如果同時設定了這三個參數,則滿足其中一個,就進行寫入結果資料。

jdbcWriteBatchByteSize

JDBC模式,Hologres Sink節點資料攢批位元組數(不是來一條資料處理一條,而是攢一批再處理)的最大值。

Long

2*1024*1024位元組,即2 MB

說明

jdbcWriteBatchSizejdbcWriteBatchByteSizejdbcWriteFlushInterval三者之間為或的關係。如果同時設定了這三個參數,則滿足其中一個,就進行寫入結果資料。

jdbcWriteFlushInterval

JDBC模式,Hologres Sink節點資料攢批寫入Hologres的最長等待時間。

Long

10000

單位為毫秒。

說明

jdbcWriteBatchSizejdbcWriteBatchByteSizejdbcWriteFlushInterval三者之間為或的關係。如果同時設定了這三個參數,則滿足其中一個,就進行寫入結果資料。

ignoreNullWhenUpdate

mutatetype='insertOrUpdate'時,是否忽略更新寫入資料中的Null值。

Boolean

false

  • false(預設值):將Null值寫到Hologres結果表裡。

  • true:忽略更新寫入資料中的Null值。

說明

當sdk_mode設定為jdbc_copy時,不支援此參數。

connectionPoolName

串連池名稱。同一個TaskManager中,配置相同名稱的串連池的表可以共用串連池。

String

取值為非'default'的任一字元串。如果多個表設定相同的串連池,則這些使用相同串連池的表的connectionSize參數也需要相同。

說明
  • 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

  • true(預設值):允許連接器填充預設值並寫入,規則如下。

    • 如果欄位是String類型,則預設寫為空白("")。

    • 如果欄位是Number類型,則預設寫為0。

    • 如果是Date、timestamp或timestamptz時間類型欄位,則預設寫為1970-01-01 00:00:00

  • false:不填充預設值,寫Null到Not Null欄位時,會拋出異常。

remove-u0000-in-text.enabled

如果寫入時字串類型包含\u0000非法字元,是否允許連接器協助去除。

Boolean

false

  • false(預設值):連接器不對資料進行操作,但碰到髒資料時寫入可能拋出如下異常,ERROR: invalid byte sequence for encoding "UTF8": 0x00

    此時需要在源表提前處理髒資料,或者在SQL中定義髒資料處理邏輯。

  • true:連接器會協助去除字串類型中的\u0000,防止寫入拋出異常。

重要
  • 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

  • false(預設值):無論INSERT語句中聲明了哪些欄位,都會更新結果表DDL中定義的所有欄位,對於未在INSERT語句中聲明的欄位,會被更新為null。

  • true:將INSERT語句中定義的欄位下推給連接器,從而可以只對聲明的欄位進行更新或插入。

說明

此參數僅在mutatetype參數配置為InsertOrUpdate時生效。

deduplication.enabled

jdbc及jdbc_fixed模式寫入攢批過程中,是否進行去重。

Boolean

true

  • true(預設值):如果一批資料中有主鍵相同的資料,預設進行去重,只保留最後一條到達的資料。以兩個欄位,其中第一個欄位為主鍵的資料舉例:

    • INSERT (1,'a')INSERT (1,'b')兩條記錄先後到達,去重之後只保留後到達的(1,'b')寫入Hologres結果表中。

    • Hologres結果表中已經存在記錄(1,'a'),此時DELETE (1,'a')INSERT (1,'b')兩條記錄先後到達,只保留後到達的(1,'b')寫入hologres中,表現為直接更新,而不是先刪除再插入。

  • false:在攢批過程中不進行去重,如果發現新到的資料和目前攢批的資料中存在主鍵相同的情況,先將攢批資料寫入,寫入完成之後再繼續寫入新到的資料。

說明
  • 僅Realtime Compute引擎VVR 8.0.5及以上版本支援該參數。

  • 不允許攢批去重時,極端情況下(例如所有資料的主鍵都相同)寫入會退化為不攢批的單條寫入,對效能有一定影響。

check-and-put.column

啟用條件更新能力,並指定檢查的欄位名。

String

參數取值必須設定為Hologres表存在的欄位名。

重要
  • 僅Realtime Compute引擎VVR 8.0.11及以上版本支援該參數。

  • sdkMode配置為jdbc_fixedjdbc情境下支援該參數。

  • 結果表必須有主鍵, 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時,即便攢批未達到預期條數,串連在空閑時將會被強制提交。在流量較小時,可以有效減少資料寫入的延時。

說明
  • 僅Realtime Compute引擎VVR 8.0.11及以上版本支援該參數。

  • sdkMode配置為jdbc_fixedjdbcjdbc_copy情境下支援該參數。

維表專屬

參數

說明

資料類型

是否必填

預設值

備忘

sdkMode

SDK模式。

String

jdbc

  • jdbc(預設值):表示使用jdbc模式進行查詢,支援主鍵點查和非主鍵的查詢,但是非主鍵的查詢對效能影響較大,查詢較慢。

  • rpc:表示使用rpc模式進行點查,僅支援主鍵點查,即維表的主鍵欄位必須與Flink Join On的欄位完全符合,與jdbc模式的區別在於不佔用串連數,且不支援讀取Hologres的Jsonb,RoarinBitmap類型。

  • jdbc_fixed:表示使用fixed jdbc方式進行點查,與jdbc模式的區別在於不佔用串連數,且不支援讀取Hologres的Jsonb,RoarinBitmap類型。僅支援主鍵點查,即維表的主鍵欄位必須與Flink Join On的欄位完全符合。目前此模式暫不支援查詢開啟資料脫敏功能的database,詳情請參見資料脫敏

各版本推薦取值詳情請參見注意事項

useRpcMode

是否通過RPC方式使用Hologres連接器。

Boolean

false

參數取值如下:

  • true:使用RPC方式使用Hologres連接器。與sdkMode參數設定為rpc效果相同。通過RPC方式會降低SQL串連數。

  • false(預設值):使用JDBC方式使用Hologres連接器。

    通過JDBC方式會佔用SQL串連,導致JDBC串連數增加。

說明

該參數取值為true時與sdkMode=rpc同效,推薦操作詳情請參見注意事項

connectionSize

單個Flink維表任務所建立的JDBC串連池大小。

Integer

3

如果作業效能不足,建議您增加串連池大小。串連池大小和資料吞吐成正比。

connectionPoolName

串連池名稱。同一個TaskManager中,配置相同名稱的串連池的表可以共用串連池。

String

取值為非'default'的任一字元串。如果多個表設定相同的串連池,則這些使用相同串連池的表的connectionSize參數也需要相同。

說明
  • VVR 8.0.3及以下版本:預設不共用,每個表使用自己的串連池。

  • VVR 8.0.4以上版本:同一個作業中Endpoint相同的表會預設共用串連池。作業中表數量較多時串連數可能相對不足影響效能,這種情況下推薦為不同的表設定不同的connectionPoolName。

  • 此參數可以按需配置,例如作業中有維表A,B以及結果表C,D,E五張hologres表,可以A表和B表使用pool1,C表和D表使用pool2,E表流量較大,單獨使用pool3。

jdbcReadBatchSize

點查Hologres維表時,攢批處理的最大條數。

Integer

128

無。

jdbcReadBatchQueueSize

維表點查請求緩衝隊列大小。

Integer

256

無。

jdbcReadTimeoutMs

維表點查的逾時時間。

Long

預設值為0,表示不會逾時

無。

jdbcReadRetryCount

維表點查逾時時的重試次數。

Integer

見備忘列。

本參數與jdbcRetryCount不同,後者是指串連發生異常時的重試次數。

說明

預設值:

  • VVR 8.0.5以下版本:1

  • VVR 8.0.5及以上版本:10

jdbcScanFetchSize

在一對多join(即沒有使用完整主鍵)時使用scan介面,scan攢批處理資料的條數。

Integer

256

無。

jdbcScanTimeoutSeconds

scan操作的逾時時間。

Integer

60

單位為秒。

cache

緩衝策略。

String

None

Hologres僅支援None和LRU兩種緩衝策略。

cacheSize

緩衝大小。

Integer

10000

選擇LRU緩衝策略後,可以設定緩衝大小。單位為條。

cacheTTLMs

緩衝更新時間間隔。

Long

見備忘列。

單位為毫秒。cacheTTLMs預設值和cache的配置有關:

  • 如果cache配置為LRU,則cacheTTLMs為緩衝逾時時間。預設不到期。

  • 如果cache配置為None,則cacheTTLMs可以不配置,表示緩衝不逾時。

cacheEmpty

是否緩衝join結果為空白的資料。

Boolean

true

  • true(預設值):緩衝join結果為空白的資料。

  • false:不緩衝join結果為空白的資料。

    但當join語句中AND前麵條件符合而後麵條件不符合時,依然會緩衝join結果為空白的資料。程式碼範例如下。

    LEFT JOIN latest_emergency FOR SYSTEM_TIME AS OF PROCTIME() AS t2
     ON t1.alarm_id = t2.alarm_id -- 如果發現是動態警示,則匹配時加入動態警示id,否則無需考慮動態警示id欄位。
     AND CASE
     WHEN alarm_type = 2 THEN t1.dynamic_id = t2.dynamic_alarm_id
     ELSE true
     END

async

是否非同步返回資料。

Boolean

false

  • true:表示非同步返回資料。

  • false(預設值):表示不進行非同步返回資料。

說明

非同步返回資料是無序的。

Flink與Hologres時區說明

時間類型

產品

類型

說明

Flink

Flink TIMESTAMP

表示沒有時區資訊的日期和時間,描述年、 月、日、小時、分鐘、秒和小數秒對應的時間戳記。可以通過一個字串來指定,例如1970-01-01 00:00:04.001

Flink TIMESTAMP_LTZ

用於描述時間軸上的絕對時間點,使用long儲存從epoch至今的毫秒數,使用int儲存毫秒中的納秒數。epoch時間是從Java的標準epoch時間開始計算。在計算和可視化時, 每個TIMESTAMP_LTZ類型的資料都使用Session (會話)中配置的時區。可以用於跨時區的計算,因為它是一個基於epoch的絕對時間點,代表的就是不同時區的同一個絕對時間點。

相同的TIMESTAMP_LTZ值,在不同的時區可能會反映出不同的本地TIMESTAMP,例如:如果一個TIMESTAMP_LTZ值為2024-03-19T04:00:00Z,在上海時區(UTC+8)的本地時間戳記會表示為2024-03-19T12:00:00,而在格林威治時區(UTC+0)則表示為2024-03-19T04:00:00

Hologres

TIMESTAMP

類似於Flink的TIMESTAMP類型,表示沒有時區資訊的日期和時間。儲存資料時不會改變,即使用戶端的時區發生變化,儲存的值也保持不變。例如:2022-01-01 01:01:01.123456

TIMESTAMP WITH TIME ZONE (TIMESTAMPTZ)

類似於Flink的TIMESTAMP_LTZ類型,它帶有時區資訊。Hologres儲存TIMESTAMPTZ資料時,會將其轉換為UTC時區的值。當查詢資料時,Hologres會根據用戶端的時區配置參數將UTC時區的值轉換為用戶端時區的值。

例如北京(UTC+8)時區的時間戳記2022-02-01 10:33:20.125+08。在Hologres中儲存為TIMESTAMPTZ類型時,其值會是2022-02-01 10:33:20.125+08

時間類型映射

  • Realtime Compute引擎VVR 8.0.6及以上版本且type-mapping.timestamp-converting.legacy=false時,支援所有即時數倉Hologres間的相互轉換。

    Flink

    Hologres

    詳情

    TIMESTAMP

    TIMESTAMP

    之間相互轉換是直接的,不涉及時區轉換。因此推薦採用該資料對應。

    TIMESTAMP LTZ

    TIMESTAMPTZ

    TIMESTAMP

    TIMESTAMPTZ

    之間的轉換涉及時區轉換。為了在轉換中保持準確性,需要通過配置項參數table.local-time-zone設定Flink時區,配置項參數設定方法請參見如何配置自訂的作業運行參數?

    例如當設定'table.local-time-zone': 'Asia/Shanghai'時,表示Flink時區為上海(+8時區)時,Flink TIMESTAMP類型的資料為2022-01-01 01:01:01.123456,寫入Hologres TIMESTAMP TZ的數值為2022-01-01 01:01:01.123456+8。

    TIMESTAMP LTZ

    TIMESTAMP

  • Realtime Compute引擎VVR8.0.6及以上版本且type-mapping.timestamp-converting.legacy=true時或者VVR 8.0.5及以下版本,除TIMESTAMP間轉化,其他類型相互轉化可能會出現資料偏差問題。

    Flink

    Hologres

    備忘

    TIMESTAMP

    TIMESTAMP

    之間相互轉換是直接的,不涉及時區轉換。因此推薦採用該資料對應。

    TIMESTAMP LTZ

    TIMESTAMPTZ

    讀寫Hologres資料時都當作無時區時間進行處理,可能會存在資料偏差

    例如,Flink TIMESTAMP_LTZ類型的數值為2024-03-19T04:00:00Z,在上海(+8時區)對應的實際無時區時間為2024-03-19T12:00:00,但是寫入時將2024-03-19T04:00:00當作無時區時間,寫入Hologres TIMESTAMPTZ的數值為2024-03-19T04:00:00+08,數值偏差8小時。

    TIMESTAMP

    TIMESTAMPTZ

    時區轉換預設採用的是運行環境的JVM時區,而不是Flink時區,這與Flink內部計算的時區轉換格式不同。當Flink時區與機器的JVM時區不一致時,會導致資料存在偏差,建議採用Flink時區進行Hologres資料的讀寫。

    TIMESTAMP LTZ

    TIMESTAMP