DataWorksData Integration支援讀寫Snowflake。本文為您介紹DataWorks的Snowflake資料同步能力支援情況。
使用限制
Snowflake Reader、Writer使用的驅動版本是snowflake-jdbc:3.20.0,驅動能力詳情請參見SnowFlake JDBC驅動程式發布說明。
支援的欄位類型
Snowflake Reader和Snowflake Writer支援大部分通用的關聯式資料庫資料類型,例如數字、字元等。但也存在部分類型未被支援的情況,請注意檢查您的資料類型,根據具體的資料庫進行選擇。
欄位類型 | 離線讀(Snowflake Reader) | 離線寫(Snowflake Writer) |
NUMBER | 支援 | 支援 |
DECIMAL | 支援 | 支援 |
NUMERIC | 支援 | 支援 |
INT | 支援 | 支援 |
INTEGER | 支援 | 支援 |
BIGINT | 支援 | 支援 |
SMALLINT | 支援 | 支援 |
TINYINT | 支援 | 支援 |
BYTEINT | 支援 | 支援 |
FLOAT | 支援 | 支援 |
FLOAT4 | 支援 | 支援 |
FLOAT8 | 支援 | 支援 |
DOUBLE | 支援 | 支援 |
DOUBLE PRECISION | 支援 | 支援 |
CHAR | 支援 | 支援 |
VARCHAR | 支援 | 支援 |
STRING | 支援 | 支援 |
TEXT | 支援 | 支援 |
BINARY | 支援 | 支援 |
VARBINARY | 支援 | 支援 |
BOOLEAN | 支援 | 支援 |
DATE | 支援 | 支援 |
TIME | 支援 | 支援 |
TIMESTAMP | 支援 | 支援 |
TIMESTAMP_NTZ | 支援 | 支援 |
TIMESTAMP_LTZ | 支援 | 支援 |
TIMESTAMP_TZ | 不支援 | 支援 |
OBJECT | 不支援 | 不支援 |
ARRAY | 不支援 | 不支援 |
VARIANT | 不支援 | 不支援 |
GEOGRAPHY | 不支援 | 不支援 |
GEOMETRY | 不支援 | 不支援 |
VECTOR | 不支援 | 不支援 |
FILE | 不支援 | 不支援 |
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見資料來源管理,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
資料同步任務開發
資料同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:指令碼Demo與參數說明。
附錄:指令碼Demo與參數說明
離線任務指令碼配置方式
如果使用指令碼模式配置單表離線任務,您需要按照統一的指令碼格式要求,在任務指令碼中編寫相應的參數,詳情請參見指令碼模式配置。以下為您介紹指令碼模式下資料來源的參數配置詳情。
Reader指令碼Demo
{
"transform": false,
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "snowflake",
"parameter": {
"schema": "PUBLIC",
"envType": 0,
"datasource": "snowflake_datasource",
"column": [
"ID",
"NAME"
],
"where": "",
"table": "table"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": true
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": false,
"concurrent": 2
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Reader指令碼參數
參數 | 描述 | 是否必選 | 預設值 |
datasource | 輸入Snowflake資料來源名稱。 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
schema | 要讀取的Snowflake表所在的Schema。 | 是 | 無 |
column | 所配置的表中需要同步的列名集合,使用JSON的數組描述欄位資訊,預設使用所有列配置,例如[ * ]:
| 是 | 無 |
splitFactor | 切分因子,可以配置同步資料的切分份數。如果配置了多並發,會按照並發數 * splitFactor份來切分。例如,並發數=5,splitFactor=5,則會按照5*5=25份來切分,在5個並發線程上執行。 說明 建議取值範圍:1~100,過大會導致記憶體溢出。 | ||
splitPk | Snowflake Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區。資料同步系統因此會啟動並發任務進行資料同步,這樣可以提高資料同步的效率。
| ||
where | 篩選條件,SnowFlake Reader根據指定的column、table和where條件拼接SQL,並根據該SQL進行資料幫浦。例如在做測試時,可以將where條件指定為limit 10。 在實際業務情境中,通常會選擇當天的資料進行同步,可以將where條件指定為
| 否 | 無 |
fetchSize | 該配置項定義了外掛程式和資料庫伺服器端每次批量資料擷取條數,該值決定了Data Integration和伺服器端的網路互動次數,能夠提升資料幫浦效能。 說明 fetchSize值過大(大於2048)可能造成資料同步進程OOM。 | 否 | 1024 |
Writer指令碼Demo
{
"transform": false,
"type": "job",
"version": "2.0",
"steps": [
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType": "snowflake",
"parameter": {
"schema": "PUBLIC",
"envType": 0,
"datasource": "snowflake_datasource",
"column": [
"ID",
"NAME"
],
"table": "TABLE"
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"executeMode": null,
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 2,
"throttle": false
}
},
"order": {
"hops": []
}
}Writer指令碼參數
參數 | 描述 | 是否必選 | 預設值 |
datasource | 輸入Snowflake資料來源名稱。 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
schema | 要寫入的Snowflake表所在的Schema。 | 是 | 無 |
column | 目標表需要寫入資料的欄位,欄位之間用英文逗號分隔。例如 | 是 | 無 |
batchSize | 一次性批量提交的記錄數大小,該值可以極大減少Data Integration與Snowflake的網路互動次數,並提升整體輸送量。但是該值設定過大可能會造成Data Integration運行進程OOM情況。 | 否 | 1024 |