このドキュメントでは、Table Store Reader でサポートされているデータ型とパラメーターについて、およびコードエディターを使用した構成方法について説明します。

Table Store Reader は、指定された範囲に基づいて Table Store から増分データを読み取ることができます。 現在、Table Store Reader は次の方法で増分データを読み取ることができます。
  • テーブル全体からデータを読み取ります。
  • 指定範囲に基づいてデータを読み取ります。
  • 指定されたシャードからデータを読み取ります。

Table Store は、Apsara 分散オペレーティングシステム上に構築された NoSQL データベースサービスであり、リアルタイムで大量の構造化データの保存およびアクセスができます。 Table Store は、インスタンスとテーブルにデータを編成します。 Table Store は、データシャーディングと負荷分散技術を使用して、シームレスにデータスケールを拡張します。

Table Store Reader は、公式の Table Store Java SDK を介して Table Store サーバーに接続し、サーバーからデータを読み取ります。 Table Store Reader は公式のデータ同期プロトコルに基づいて Data Integration でデータを読み取り可能な形式に変換し、変換されたデータをライターに送信します。

Table Store Reader は、テーブル範囲に基づいて同期ノードを並行タスクに分割し、Table Store のテーブルのデータを同期します。 各スレッドがタスクを実行します。

Table Store Reader は、すべての Table Store データ型をサポートしています。 次の表は、Table Store Reader でサポートされているリージョンの一覧を示します。
カテゴリー Table Store データ型
Integer INTEGER
Floating point DOUBLE
String STRING
Boolean BOOLEAN
Binary BINARY
Table Store は DATE 型のデータをサポートしていません。 アプリケーションは、LONG 型の UNIX タイムスタンプを使用して時間を示します。

パラメーター

パラメーター 説明 必須 / 任意 デフォルト値
endpoint Table Store サーバーのエンドポイントです。 詳細については、「」「エンドポイント」をご参照ください。 必須 なし
accessId Table Store にアクセスするための AccessKey ID です。 必須 なし
accessKey Table Store にアクセスするための AccessKey シークレットです。 必須 なし
instanceName Table Store インスタンスの名前です。 このインスタンスは、Table Store を使用および管理するためのエンティティです。

Table Store サービスを有効化すると、コンソールでインスタンスを作成してテーブルを作成および管理できます。

インスタンスは、Table Store リソースを管理するための基本的な単位です。 Table Store による、アプリケーションに対するすべてのアクセス制御とリソース測定は、インスタンスレベルで完了します。

必須 なし
table ソーステーブルの名前です。 ソーステーブルとして指定できるテーブルは 1 つのみです。 Table Store は、複数テーブルの同期は必要ありません。 必須 なし
column ソーステーブルから同期される列です。 列は JSON 配列で記述されます。 Table Store は NoSQL データベースサービスです。 Table Store Reader がデータを読み取るためには列名を指定する必要があります。
  • 一般的な列を指定することができます。 たとえば、Table Store Reader が column 1 のデータを読み取るには、{"name":"col1"} を指定します。
  • 読み取る特定の列を指定できます。 Table Store Reader は、指定された列のみを読み取ります。
  • 定数の列を指定することができます。 たとえば、{"type":"STRING", "value":"DataX"} を指定すると、データが STRING 型でデータ値が DataX である列を読み取ることができます。 type パラメーターは定数型を指定します。 サポートされている型は、STRING、INT、DOUBLE、BOOLEAN、BINARY、INF_MIN、INF_MAX です。 定数型が BINARY の場合、定数値は Base64 でエンコードされている必要があります。 INF_MIN は Table Store で指定された最小値を示し、INF_MAX は Table Store で指定された最大値を示します。 型を INF_MIN または INF_MAX に設定した場合は、値を設定しないでください。 設定すると、エラーが発生します。
  • Table Store は SQL と同様の関数または式を提供していないため、関数またはカスタム式を指定することはできません。 Table Store Reader では、関数または式を含む列を読み取ることはできません。
必須 なし
beginend データを読み取る Table Store テーブルの範囲。 2 つのパラメーターの両方を指定することも、どちらも指定しないこともできます。 begin パラメーターと end パラメーターは、Table Store テーブルのプライマリキー列の値の範囲を定義します。 テーブル内のすべてのプライマリキー列に値の範囲を指定していることを確認してください。 範囲を制限する必要がない場合は、パラメーターを {"type":"INF_MIN"} 、 {"type":"INF_MAX"} に指定します。 たとえば、プライマリキーが[DeviceID、SellerID] である Table Store テーブルから特定のデータを読み取るには、begin パラメーターと end パラメーターを次のように指定します。
"range": {
      "begin": [
        {"type":"INF_MIN"}, // DeviceID フィールドの最小値。
        {"type":"INT", "value":"0"} // SellerID フィールドの最小値。
      ], 
      "end": [
        {"type":"INF_MAX"}, // DeviceID フィールドの最大値。
        {"type":"INT", "value":"9999"} // SellerID フィールドの最大値。
      ]
    }
テーブルからすべてのデータを読み取るには、begin パラメーターと end パラメーターを次のように指定します。
"range": {
      "begin": [
        {"type":"INF_MIN"}, // DeviceID フィールドの最小値。
        {"type":"INF_MIN"} // SellerID フィールドの最小値。
      ], 
      "end": [
        {"type":"INF_MAX"}, // DeviceID フィールドの最大値。
          {"type":"INF_MAX"} // SellerID フィールドの最大値。
      ]
    }
必須 なし
split データシャーディングのカスタムルールです。 このパラメーターは詳細設定のため、 設定しないことを推奨します。

データが Table Store テーブルに不均一に分散されており、Table Store Reader の自動シャーディング機能が正常に機能しない場合、シャーディングルールをカスタマイズすることができます。

split パラメーターで指定されたシャーディングルールは、begin パラメーターと end パラメーターで指定された範囲内にあり、パーティションキー列の値である必要があります。 つまり、split パラメーターのプライマリキー列の値ではなく、パーティションキー列の値のみを指定する必要があります。

プライマリキーが [DeviceID、SellerID] である Table Store テーブルからデータを読み取るには、次のパラメーターを指定します。
"range": {
      "begin": [
        {"type":"INF_MIN"}, // DeviceID フィールドの最小値。
        {"type":"INF_MIN"} // SellerID フィールドの最小値。
      }, 
      "end": {
        {"type":"INF_MAX"}, // DeviceID フィールドの最大値。
        {"type":"INF_MAX"} // SellerID フィールドの最大値。
      },
       // 指定されたシャーディングルール。 シャーディングルールを指定した場合、同期ノードは、begin、end、split パラメーターの値に基づいて並行タスクに分割されます。 データは、パーティションキー、つまりプライマリキーの最初の列にのみ基づいて分割されます。
       // パーティションキーのデータ型は、INF_MIN、INF_MAX、STRING、または INT にすることができます。
            "split":[
                                {"type":"STRING", "value":"1"},
                                {"type":"STRING", "value":"2"},
                                {"type":"STRING", "value":"3"},
                                {"type":"STRING", "value":"4"},
                                {"type":"STRING", "value":"5"}
                    ]
    }
任意 なし

コードレス UI を使用した Table Store Reader の構成

現在、Table Store Reader でコードレスユーザーインターフェイス (UI) はサポートされていません。

コードエディターを使用した Table Store Reader の構成

次のコードでは、ノードは Table Store テーブルからデータを読み取るように構成されています。
{
    "type":"job",
    "version": "2.0", // バージョン番号。
    "steps":[
        {
            "stepType":"ots",// リーダーのタイプ。
            "parameter":{
                "datasource":"",// 接続名。
                "column":[ // 同期する列。
                    {
                        "name":"column1" // 列名。
                    },
                    {
                        "name": "column2"
                    },
                    {
                        "name": "column3"
                    },
                    {
                        "name": "column4"
                    },
                    {
                        "name": "column5"
                    }
                ],
                "range":{
                    "split":[
                        {
                            "type": "INF_MIN"
                        },
                        {
                            "type":"STRING",
                            "value":"splitPoint1"
                        },
                        {
                            "type":"STRING",
                            "value":"splitPoint2"
                        },
                        {
                            "type":"STRING",
                            "value":"splitPoint3"
                        },
                        {
                            "type":"INF_MAX"
                        }
                    ],
                    "end":[
                        {
                            "type":"INF_MAX"
                        },
                        {
                            "type": "INF_MAX"
                        },
                        {
                            "type":"STRING",
                            "value":"end1"
                        },
                        {
                            "type":"INT",
                            "value":"100"
                        }
                    ],
                    "begin":[
                        {
                            "type":"INF_MIN"
                        },
                        {
                            "type":"INF_MIN"
                        },
                        {
                            "type":"STRING",
                            "value":"begin1"
                        },
                        {
                            "type":"INT",
                            "value":"0"
                        }
                    ]
                },
                "table":""// 同期するテーブル名。
            },
            "name":"Reader",
            "category":"reader"
        },
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// 許可されるダーティデータレコードの最大数。
        },
        "speed": {
            "throttle":false,// 帯域幅調整を有効にするかどうかを指定します。 値が false の場合は、帯域幅が調整されていないことを示します。 値が true の場合は、帯域幅が調整されていることを示します。 最大伝送速度はこのパラメーターを true に設定した場合にのみ有効になります。
            "concurrent":1,// 並行スレッドの最大数。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}