DataWorks は、Amazon Redshift データソースとのデータの読み取りおよび書き込みを行うための Amazon Redshift Reader と Amazon Redshift Writer を提供しています。コードレスユーザーインターフェース(UI)またはコードエディターを使用して、Amazon Redshift データソースの同期タスクを設定できます。このトピックでは、Amazon Redshift データソースとのデータ同期機能について説明します。
サポートされている Amazon Redshift のバージョン
Amazon Redshift で使用されるドライバーは、redshift-jdbc4.2 Driver 2.1.0.1 です。ドライバーの機能については、Amazon Redshift 用の JDBC ドライバーバージョンの設定を参照してください。
データ型のマッピング
Amazon Redshift データ型と SQL データ型間のマッピング、および Amazon Redshift データ型と Java データ型間のマッピングについては、Amazon Redshift 公式ドキュメントを参照してください。次の表に、データ型のマッピングを示します。
Amazon Redshift データ型 | SQL データ型 | Java データ型 |
BIGINT | SQL_BIGINT | LONG |
BOOLEAN | SQL_BIT | Boolean |
CHAR | SQL_CHAR | STRING |
DATE | SQL_TYPE_DATE | java.sql.Date |
DECIMAL | SQL_NUMERIC | BigDecimal |
DOUBLE PRECISION | SQL_DOUBLE | Double |
GEOMETRY | SQL_ LONGVARBINARY | byte[] |
INTEGER | SQL_INTEGER | INTEGER |
OID | SQL_BIGINT | LONG |
SUPER | SQL_LONGVARCHAR | STRING |
REAL | SQL_REAL | Float |
SMALLINT | SQL_SMALLINT | SHORT |
TEXT | SQL_VARCHAR | STRING |
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 | STRING |
Amazon Redshift データソースのネットワーク接続を確立する
Amazon Redshift データソース用に設定された同期タスクを実行してデータを同期する前に、内部ネットワーク経由でデータソースと Data Integration 専用リソースグループ間のネットワーク接続を確立する必要があります。詳細については、「リソースグループとデータソース間のネットワーク接続を確立する」をご参照ください。
同期タスクを開発する
同期タスクの設定のエントリポイントと手順については、以下のセクションを参照してください。パラメーター設定については、同期タスクの設定タブにある各パラメーターの情報ヒントを表示してください。
データソースを追加する
特定のデータソースとのデータ同期を行う同期タスクを設定する前に、DataWorks にデータソースを追加する必要があります。詳細については、「データソースを追加および管理する」をご参照ください。 DataWorks に Amazon Redshift データソースを追加する際には、次のパラメーターを設定する必要があります。
[JDBC URL]:IP アドレス、ポート番号、データベース名、および接続パラメーターを含む JDBC 接続文字列を指定します。パブリック IP アドレスまたはプライベート IP アドレスを指定できます。パブリック IP アドレスを指定する場合は、Data Integration 専用リソースグループが Amazon Redshift データソースがデプロイされているホストにアクセスできることを確認してください。
[ユーザー名]:接続先の Amazon Redshift データベースのユーザー名を指定します。
[パスワード]:接続先の Amazon Redshift データベースのパスワードを指定します。
単一テーブルのデータを同期するためのバッチ同期タスクを設定する
設定手順については、「コードレス UI を使用してバッチ同期タスクを設定する」および「コードエディターを使用してバッチ同期タスクを設定する」をご参照ください。
コードエディターを使用してバッチ同期タスクを設定する場合に設定されるすべてのパラメーターと実行されるコードについては、「付録:コードとパラメーター」をご参照ください。
付録:コードとパラメーター
コードエディターを使用してバッチ同期タスクを設定する
コードエディターを使用してバッチ同期タスクを設定する場合は、コードエディターのフォーマット要件に基づいて、関連データソースのリーダーとライターのパラメーターを設定する必要があります。フォーマット要件の詳細については、「コードエディターを使用してバッチ同期タスクを設定する」をご参照ください。以下の情報は、コードエディターにおけるリーダーとライターのパラメーターの設定の詳細について説明しています。
Amazon Redshift Reader のコードと Amazon Redshift Reader のコードのパラメーター
Amazon Redshift Reader のコード
{
"stepType": "redshift" // プラグイン名
"parameter":
{
"datasource":"redshift_datasource", // データソース名
"table": "redshift_table_name", // テーブル名
"where": "xxx=3", // where句
"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 | WHERE 句。バッチ同期タスクは、column、table、および where パラメーターの値を連結して SQL ステートメントを形成し、その SQL ステートメントを実行してソーステーブルからデータを読み取ります。テストを実行する場合は、where パラメーターを limit 10 に設定できます。 現在の日付に生成されたデータを読み取るには、where パラメーターを gmt_create > $bizdate に設定できます。
| いいえ | デフォルト値なし |
splitPk | データシャーディングに使用されるフィールド。このパラメーターを設定すると、ソーステーブルはこのパラメーターの値に基づいてシャーディングされます。その後、Data Integration は並列スレッドを実行してデータを読み取ります。これにより、データの同期をより効率的に行うことができます。 | いいえ | デフォルト値なし |
Amazon Redshift Writer のコードと Amazon Redshift Writer のコードのパラメーター
Amazon Redshift Writer のコード
{
"stepType": "redshift",// プラグイン名。
"parameter":
{
"postSql":["delete from XXX;"], // バッチ同期タスクの実行後に実行する SQL ステートメント
"preSql":["delete from XXX;"], // バッチ同期タスクの実行前に実行する SQL ステートメント
"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 ステートメントに設定できます。コードレス UI では 1 つの SQL ステートメントのみを実行でき、コードエディターでは複数の SQL ステートメントを実行できます。 | いいえ | デフォルト値なし |
postSql | バッチ同期タスクの実行後に実行する SQL ステートメント。たとえば、このパラメーターをタイムスタンプを追加するために使用される SQL ステートメントに設定できます。コードレス UI では 1 つの SQL ステートメントのみを実行でき、コードエディターでは複数の SQL ステートメントを実行できます。 | いいえ | デフォルト値なし |
batchSize | 一度に書き込むデータレコードの最大数。 | いいえ | 2048 |
writeMode | 書き込みモード。値を insert に設定します。 | いいえ | insert |