DataHub データソースは、DataHub との間でデータを読み書きするための双方向チャネルを提供し、大規模データの効率的な処理を可能にします。このトピックでは、DataWorks が DataHub に対して提供するデータ同期機能について説明します。
サポートバージョン
-
DataHub Reader は、DataHub SDK for Java を使用して DataHub からデータを読み取ります。次のコードは SDK のバージョンを示しています。
<dependency> <groupId>com.aliyun.DataHub</groupId> <artifactId>aliyun-sdk-DataHub</artifactId> <version>2.9.1</version> </dependency> -
DataHub Writer は、DataHub SDK for Java を使用して DataHub にデータを書き込みます。次のコードは SDK のバージョンを示しています。
<dependency> <groupId>com.aliyun.datahub</groupId> <artifactId>aliyun-sdk-datahub</artifactId> <version>2.5.1</version> </dependency>
制限事項
バッチ読み書き
STRING データ型は UTF-8 エンコーディングのみをサポートします。単一の STRING 列は 1 MB を超えることはできません。
リアルタイム読み書き
-
リアルタイム同期タスクはサーバーレスリソースグループをサポートします。
-
DataHub にデータをリアルタイムで同期する場合、データはソースデータのハッシュ値に基づいてシャーディングされます。同じハッシュ値を持つレコードは、同じシャードに同期されます。
リアルタイム全データベース書き込み
タスクを実行すると、まずバッチ同期タスクが完全データを DataHub に書き込みます。その後、リアルタイム同期タスクが開始され、ソースから宛先に増分データが同期されます。データは次のルールに基づいて書き込まれます。
-
データは TUPLE 型の DataHub トピックにのみ書き込むことができます。TUPLE データ型の詳細については、「データ型」をご参照ください。
-
DataHub にデータをリアルタイムで同期する場合、ソーステーブルのフィールドに 5 つの追加フィールドが付加されます。タスクを設定する際に、他のフィールドを追加することもできます。DataHub に送信される最終的なメッセージフォーマットの詳細については、「付録:DataHub メッセージフォーマット」をご参照ください。
サポートされるフィールド型
DataHub にデータを同期する際、値は対応するフィールド型にマッピングされます。DataHub は、BIGINT、STRING、BOOLEAN、DOUBLE、TIMESTAMP、および DECIMAL のデータ型のみをサポートします。
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を確認できます。
データ同期タスクの開発
同期タスクを設定するためのエントリーポイントと手順については、次の設定ガイドをご参照ください。
単一テーブルのバッチ同期タスクの設定
-
手順については、「ウィザードモードでのバッチ同期タスクの設定」および「スクリプトモードでのバッチ同期タスクの設定」をご参照ください。
-
スクリプトモード設定のすべてのパラメーターとスクリプトデモについては、後述の「付録:スクリプトデモとパラメーターの説明」をご参照ください。
単一テーブルのリアルタイム同期タスクの設定
手順については、「リアルタイム同期タスクの設定」をご参照ください。
さまざまな DataHub データ型でサポートされる操作、シャーディング戦略、データ形式、および関連するメッセージ例については、「付録:DataHub メッセージフォーマット」をご参照ください。
リアルタイム全データベース同期タスクの設定
手順については、「リアルタイム全データベース同期タスクの設定」をご参照ください。
よくある質問
付録:スクリプトデモとパラメーターの説明
コードエディターを使用したバッチ同期タスクの設定
コードエディターを使用してバッチ同期タスクを設定する場合、統一されたスクリプトフォーマットの要件に基づいて、スクリプト内で関連パラメーターを設定する必要があります。詳細については、「コードエディターの使用」をご参照ください。以下では、コードエディターを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。
Reader スクリプトデモ
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"job": {
"content": [
{
"reader": {
"name": "DataHubreader",
"parameter": {
"endpoint": "xxx", // DataHub のエンドポイント。
"accessId": "xxx", // DataHub へのアクセスに使用する AccessKey ID。
"accessKey": "xxx", // DataHub へのアクセスに使用する AccessKey Secret。
"project": "xxx", // DataHub プロジェクトの名前。
"topic": "xxx", // DataHub トピックの名前。
"batchSize": 1000, // 一度に読み取るレコード数。
"beginDateTime": "20180910111214", // データ消費の開始時刻。
"endDateTime": "20180910111614", // データ消費の終了時刻。
"column": [
"col0",
"col1",
"col2",
"col3",
"col4"
]
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"print": false
}
}
}
]
}
}
],
"setting":{
"errorLimit":{
"record":"0"// エラー数。
},
"speed":{
"throttle":true,// 速度制限を有効にするかどうかを指定します。throttle が false の場合、mbps パラメーターは有効にならず、速度制限は無効になります。throttle が true の場合、速度制限は有効になります。
"concurrent":1,// 同時実行数。
"mbps":"12"// 速度制限レート。1 mbps = 1 MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Reader スクリプトパラメーター
|
パラメーター |
説明 |
必須 |
|
endpoint |
DataHub の endpoint。 |
はい |
|
accessId |
DataHub へのアクセスに使用する accessId。 |
はい |
|
accessKey |
DataHub へのアクセスに使用する accessKey。 |
はい |
|
project |
DataHub プロジェクトの名前。project は DataHub の基本的なリソース管理単位であり、リソースの分離とアクセス制御に使用されます。 |
はい |
|
topic |
DataHub topic の名前。 |
はい |
|
batchSize |
一度に読み取るレコード数。デフォルト値:1,024。 |
いいえ |
|
beginDateTime |
データ消費の開始時刻。このパラメーターは時間範囲の左境界 (含む) を指定し、yyyyMMddHHmmss 形式の時刻文字列である必要があります。増分同期を実装するには、このパラメーターを DataWorks のスケジューリングパラメーターと組み合わせて使用できます。たとえば、ノードスケジューリングパラメーターのパラメーター名を bizdate に、パラメーター値を $[yyyymmdd-1] に設定します。次に、beginDateTime を ${bizdate}000000 に設定します。これは、データ消費の開始時刻が前日の 00:00:00 であることを示します。 説明 beginDateTime と endDateTime は一緒に使用する必要があります。 |
はい |
|
endDateTime |
データ消費の終了時刻。このパラメーターは時間範囲の右境界 (含まない) を指定し、yyyyMMddHHmmss 形式の時刻文字列である必要があります。増分同期を実装するには、このパラメーターを DataWorks のスケジューリングパラメーターと組み合わせて使用できます。たとえば、ノードスケジューリングパラメーターのパラメーター名を bizdate に、パラメーター値を $[yyyymmdd-1] に設定します。次に、endDateTime を ${bizdate}235959 に設定します。これは、データ消費の終了時刻が前日の 23:59:59 であることを示します。 説明 beginDateTime と endDateTime は一緒に使用する必要があります。 |
はい |
Writer スクリプトデモ
{
"type": "job",
"version": "2.0",// バージョン番号。
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "datahub",// プラグイン名。
"parameter": {
"datasource": "",// データソース。
"topic": "",// トピックは DataHub におけるサブスクリプションとパブリッシングの最小単位です。トピックを使用して、ストリーミングデータの種類やカテゴリを表すことができます。
"maxRetryCount": 500,// タスク失敗時の最大リトライ回数。
"maxCommitSize": 1048576// 累積されたデータバッファーが maxCommitSize (バイト単位) に達すると、データはバッチで宛先にコミットされます。
// DataHub は 1 回のリクエストを 10,000 レコードに制限しています。この制限を超えるとタスクエラーが発生します。このパラメーターは、レコードあたりの平均サイズに 10,000 を掛けた値に基づいて設定してください。たとえば、各レコードが 10 KB の場合、このパラメーターを 10 × 10,000 KB 未満の値に設定します。
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""// エラー数。
},
"speed": {
"throttle":true,// 速度制限を有効にするかどうかを指定します。throttle が false の場合、mbps パラメーターは有効にならず、速度制限は無効になります。throttle が true の場合、速度制限は有効になります。
"concurrent":20, // 同時実行数。
"mbps":"12"// 速度制限レート。1 mbps = 1 MB/s。
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Writer スクリプトパラメーター
|
パラメーター |
説明 |
必須 |
デフォルト値 |
|
accessId |
DataHub の accessId。 |
はい |
N/A |
|
accessKey |
DataHub の accessKey。 |
はい |
N/A |
|
endPoint |
DataHub リソースにアクセスするには、リソースが属するサービスに基づいて正しいドメイン名を選択する必要があります。 |
はい |
N/A |
|
maxRetryCount |
タスク失敗時の最大リトライ回数。 |
いいえ |
N/A |
|
mode |
値が STRING 型の場合の書き込みモード。 |
はい |
N/A |
|
parseContent |
解析するコンテンツ。 |
はい |
N/A |
|
project |
プロジェクトは DataHub データの基本的な組織単位です。プロジェクトには複数のトピックが含まれます。 説明 DataHub プロジェクトは MaxCompute プロジェクトから独立しています。MaxCompute で作成したプロジェクトは DataHub では再利用できません。プロジェクトは別途作成する必要があります。 |
はい |
N/A |
|
topic |
トピックは DataHub におけるサブスクリプションとパブリッシングの最小単位です。トピックを使用して、ストリーミングデータの種類やカテゴリを表すことができます。 |
はい |
N/A |
|
maxCommitSize |
書き込み効率を向上させるため、DataX はデータをバッファーに蓄積し、蓄積されたデータが maxCommitSize (バイト単位) に達すると、バッチで宛先にデータをコミットします。デフォルト値は 1,048,576 (1 MB) です。DataHub は 1 回のリクエストを 10,000 レコードに制限しています。この制限を超えるとタスクエラーが発生します。リクエストごとに DataHub に書き込まれるレコード数を制御するには、レコードあたりの平均サイズに 10,000 を掛けた値に基づいてこのパラメーターを設定します。 |
いいえ |
1MB |