Amazon Redshift資料來源為您提供讀取和寫入Amazon Redshift的雙向通道,方便您後續可以通過嚮導模式和指令碼模式配置資料同步任務。本文為您介紹Amazon Redshift資料同步能力支援情況。
支援的Amazon Redshift版本
Amazon Redshift使用的驅動版本是redshift-jdbc4.2 Driver 2.1.0.1,驅動能力詳情請參見為Amazon Redshift配置JDBC驅動程式版本。
支援的欄位類型
Amazon Redshift的欄位類型請參見Amazon Redshift官方文檔。下面為您羅列當前主要欄位的支援情況。
Amazon Redshift類型 | SQL類型 | Java類型 |
BIGINT | SQL_BIGINT | 長整型 |
BOOLEAN | SQL_BIT | Boolean |
CHAR | SQL_CHAR | 字串 |
DATE | SQL_TYPE_DATE | java.sql.Date |
DECIMAL | SQL_NUMERIC | BigDecimal |
DOUBLE PRECISION | SQL_DOUBLE | Double |
GEOMETRY | SQL_ LONGVARBINARY | byte[] |
INTEGER | SQL_INTEGER | 整數 |
OID | SQL_BIGINT | 長整型 |
SUPER | SQL_LONGVARCHAR | 字串 |
REAL | SQL_REAL | Float |
SMALLINT | SQL_SMALLINT | 短型 |
TEXT | SQL_VARCHAR | 字串 |
TIME | SQL_TYPE_TIME | java.sql.Time |
TIMETZ | SQL_TYPE_TIME | java.sql.Time |
TIMESTAMP | SQL_TYPE_ TIMESTAMP | java.sql.Timestamp |
TIMESTAMPTZ | SQL_TYPE_ TIMESTAMP | java.sql.Timestamp |
VARCHAR | SQL_VARCHAR | 字串 |
資料同步前準備:配置Amazon Redshift的網路連接
在DataWorks上進行資料同步前,您需要將Amazon Redshift的網路與Data Integration的獨享資源群組打通,使之通過內網地址進行訪問。網路打通的具體方法可參考:配置資源群組與網路連通。
資料同步任務開發:Amazon Redshift同步流程指導
Amazon Redshift資料同步任務的配置入口和通用配置流程指導可參見下文的配置指導,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源。以下對Amazon Redshift資料來源的幾個配置項進行說明。
JDBC URL:請填寫JDBC串連串,包含IP、連接埠號碼、資料庫和串連參數。支援公網IP和私網IP,如果使用公網IP,請確保Data Integration資源群組能夠正常訪問Amazon Redshift所在的主機。
使用者名稱:請填寫Amazon Redshift資料庫的使用者名稱。
密碼:請填寫Amazon Redshift資料庫對應使用者的密碼。
單表離線同步任務配置指導
操作流程請參見通過嚮導模式配置離線同步任務、通過指令碼模式配置離線同步任務。
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:Amazon Redshift指令碼Demo與參數說明。
附錄:Amazon Redshift指令碼Demo與參數說明
離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Writer參數的指導詳情。
Amazon Redshift Reader指令碼Demo與參數說明
Amazon Redshift Reader指令碼Demo
{
"stepType": "redshift"
"parameter":
{
"datasource":"redshift_datasource",
"table": "redshift_table_name",
"where": "xxx=3",
"splitPk": "id",
"column":
[
"id",
"table_id",
"table_no",
"table_name",
"table_status"
]
},
"name": "Reader",
"category": "reader"
}
Amazon Redshift Reader指令碼參數
指令碼參數名 | 描述 | 是否必選 | 預設值 |
datasource | 資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須與添加的資料來源名稱保持一致。 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
column | 需要同步的欄位列表,欄位之間用英文逗號分隔。例如"column":["id","name","age"]。 如果要同步全部列,使用(*)表示,例如"column":["*"]。 | 是 | 無 |
where | 篩選條件,根據指定的column、table和where條件拼接SQL,並根據該SQL進行資料幫浦。例如在做測試時,可以將where條件指定為limit 10。 在實際業務情境中,通常會選擇當天的資料進行同步,可以將where條件指定為gmt_create>$bizdate:
| 否 | 無 |
splitPk | 如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區。資料同步系統會啟動並發任務進行資料同步,以提高資料同步的效能。 | 否 | 無 |
Amazon Redshift Writer指令碼Demo與參數說明
Amazon Redshift Writer指令碼Demo
{
"stepType": "redshift",//外掛程式名。
"parameter":
{
"postSql":["delete from XXX;"],
"preSql":["delete from XXX;"],
"datasource":"redshift_datasource",//資料來源名。
"table": "redshift_table_name",//表名。
"writeMode": "insert",
"batchSize": 2048,
"column":
[
"id",
"table_id",
"table_no",
"table_name",
"table_status"
]
},
"name": "Writer",
"category": "writer"
}
Amazon Redshift Writer指令碼參數
指令碼參數名 | 描述 | 是否必選 | 預設值 |
datasource | 資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須與添加的資料來源名稱保持一致。 | 是 | 無 |
table | 需要寫入的表名稱。 | 是 | 無 |
column | 目標表需要寫入資料的欄位,欄位之間用英文逗號分隔。例如"column":["id","name","age"]。 如果要依次寫入全部列,使用(*)表示,例如"column":["*"]。 | 是 | 無 |
preSql | 執行資料同步任務之前率先執行的SQL語句。目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如清除舊資料。 | 否 | 無 |
postSql | 執行資料同步任務之後執行的SQL語句。目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如加上某一個時間戳記。 | 否 | 無 |
batchSize | 每批次匯入的最巨量資料條數。 | 否 | 2048 |
writeMode | 目前只支援insert。 | 否 | insert |