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 | 字符串 |
數據同步前準備
在DataWorks上進行數據同步前,您需要將數據源的網絡與數據集成使用的Serverless資源組(推薦)或獨享數據集成資源組打通,使之通過內網地址進行訪問。網絡打通的具體方法可參考:網絡連通方案。
創建數據源
在進行數據同步任務開發時,您需要在DataWorks上創建一個對應的數據源,操作流程請參見創建并管理數據源,詳細的配置參數解釋可在配置界面查看對應參數的文案提示。
以下對Amazon Redshift數據源的幾個配置項進行說明。
JDBC URL:請填寫JDBC連接串,包含IP、端口號、數據庫和連接參數。支持公網IP和私網IP,如果使用公網IP,請確保數據集成資源組能夠正常訪問Amazon Redshift所在的主機。
用戶名:請填寫Amazon Redshift數據庫的用戶名。
密碼:請填寫Amazon Redshift數據庫對應用戶的密碼。
數據同步任務開發
數據同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
操作流程請參見通過向導模式配置離線同步任務、通過腳本模式配置離線同步任務。
腳本模式配置的全量參數和腳本Demo請參見下文的附錄:腳本Demo與參數說明。
附錄:腳本Demo與參數說明
離線任務腳本配置方式
如果您配置離線任務時使用腳本模式的方式進行配置,您需要按照統一的腳本格式要求,在任務腳本中編寫相應的參數,詳情請參見通過腳本模式配置離線同步任務,以下為您介紹腳本模式下數據源的參數配置詳情。
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"
}
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代表的字段進行數據分片。數據同步系統會啟動并發任務進行數據同步,以提高數據同步的效能。 | 否 | 無 |
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"
}
Writer腳本參數
腳本參數名 | 描述 | 是否必選 | 默認值 |
datasource | 數據源名稱,腳本模式支持添加數據源,此配置項填寫的內容必須與添加的數據源名稱保持一致。 | 是 | 無 |
table | 需要寫入的表名稱。 | 是 | 無 |
column | 目標表需要寫入數據的字段,字段之間用英文逗號分隔。例如"column":["id","name","age"]。 如果要依次寫入全部列,使用(*)表示,例如"column":["*"]。 | 是 | 無 |
preSql | 執行數據同步任務之前率先執行的SQL語句。目前向導模式僅允許執行一條SQL語句,腳本模式可以支持多條SQL語句,例如清除舊數據。 | 否 | 無 |
postSql | 執行數據同步任務之后執行的SQL語句。目前向導模式僅允許執行一條SQL語句,腳本模式可以支持多條SQL語句,例如加上某一個時間戳。 | 否 | 無 |
batchSize | 每批次導入的最大數據條數。 | 否 | 2048 |
writeMode | 目前只支持insert。 | 否 | insert |