すべてのプロダクト
Search
ドキュメントセンター

DataWorks:DataHub データソース

最終更新日:Apr 24, 2026

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 は、BIGINTSTRINGBOOLEANDOUBLETIMESTAMP、および 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 であることを示します。

説明

beginDateTimeendDateTime は一緒に使用する必要があります。

はい

endDateTime

データ消費の終了時刻。このパラメーターは時間範囲の右境界 (含まない) を指定し、yyyyMMddHHmmss 形式の時刻文字列である必要があります。増分同期を実装するには、このパラメーターを DataWorks のスケジューリングパラメーターと組み合わせて使用できます。たとえば、ノードスケジューリングパラメーターのパラメーター名を bizdate に、パラメーター値を $[yyyymmdd-1] に設定します。次に、endDateTime を ${bizdate}235959 に設定します。これは、データ消費の終了時刻が前日の 23:59:59 であることを示します。

説明

beginDateTimeendDateTime は一緒に使用する必要があります。

はい

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