Tablestore は、Alibaba Cloud の Pangu ストレージ上に構築された NoSQL データストレージサービスです。Tablestore データソースを使用すると、Tablestore からのデータの読み取りと書き込みができます。このトピックでは、DataWorks の Tablestore データ同期のサポートについて説明します。
制限事項
-
Tablestore Reader および Writer プラグインは、Tablestore からのデータの読み取りと書き込みを行い、ワイドテーブルと時系列テーブルのデータを 行モード と 列モード の 2 つのモードで転送します。
-
列モード:Tablestore の多バージョンモデルでは、データは の 3 階層構造になっています。1 つの行は任意の数の列を持つことができ、列名は固定されていません。各列は複数のバージョンを持つことができ、それぞれに特定のタイムスタンプ (バージョン番号) があります。このモードでは、データは (プライマリキー値、列名、タイムスタンプ、列値) の 4 タプルとしてエクスポートされます。このモードでインポートされるデータも、同じ 4 タプル形式である必要があります。
-
行モード:このモードでは、更新された各レコードが (プライマリキー値、属性列値) の形式で行としてエクスポートされます。
-
-
Tablestore テーブルは、プライマリキー列 (primaryKey) と属性列 (column) で構成されます。ソースの列の順序は、送信先テーブルのスキーマと一致する必要があり、プライマリキー列が属性列の前に来ます。不一致があると、列マッピングエラーが発生します。
-
Tablestore Reader は、ソースデータの範囲を N 個のタスクに分割します。N はデータ同期に設定された同時実行数です。専用の Tablestore Reader スレッドが各タスクを処理します。
サポートされるフィールドタイプ
Tablestore Reader と Tablestore Writer は、すべての Tablestore データ型をサポートします。
|
タイプカテゴリ |
Tablestore タイプ |
|
integer |
INTEGER |
|
floating-point |
DOUBLE |
|
string |
STRING |
|
boolean |
BOOLEAN |
|
binary |
BINARY |
-
Tablestore は、日付または時刻のデータ型をネイティブにサポートしていません。アプリケーションは通常、
Long型を使用して時刻を UNIX タイムスタンプとして保存します。 -
スクリプトモードでは、
INTEGER型のデータをINTとして設定する必要があります。DataWorks は自動的にそれをINTEGERに変換します。型を直接INTEGERとして設定すると、エラーがログに記録され、タスクは失敗します。
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を理解できます。
同期タスクの開発
同期タスクの設定のエントリポイントと手順については、以下の設定ガイドをご参照ください。
単一テーブルのオフライン同期タスク
-
手順については、「スクリプトモードでの設定」をご参照ください。
-
完全なパラメーターリファレンスとスクリプト例については、「付録 II:Writer スクリプト例とパラメーターリファレンス」をご参照ください。
付録 I:Reader スクリプト例とパラメーター
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内で関連パラメーターを設定する必要があります。詳細については、「スクリプトモードでの設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。
Reader スクリプト例
行モードのワイドテーブル
",// データソース。
"newVersion":"true",// 新しい Tablestore リーダーを使用します。
"mode": "normal",// 行モードでデータを読み取ります。
"isTimeseriesTable":"false",// テーブルが時系列テーブルではなく、ワイドテーブルであることを指定します。
"column":[// カラム。
{
"name":"column1"// カラム名。
},
{
"name":"column2"
},
{
"name":"column3"
},
{
"name":"column4"
},
{
"name":"column5"
}
],
"range":{
"split":[
{
"type":"STRING",
"value":"beginValue"
},
{
"type":"STRING",
"value":"splitPoint1"
},
{
"type":"STRING",
"value":"splitPoint2"
},
{
"type":"STRING",
"value":"splitPoint3"
},
{
"type":"STRING",
"value":"endValue"
}
],
"end":[
{
"type":"STRING",
"value":"endValue"
},
{
"type":"INT",
"value":"100"
},
{
"type":"INF_MAX"
},
{
"type":"INF_MAX"
}
],
"begin":[
{
"type":"STRING",
"value":"beginValue"
},
{
"type":"INT",
"value":"0"
},
{
"type":"INF_MIN"
},
{
"type":"INF_MIN"
}
]
},
"table":""// テーブル名。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容されるエラーレコードの最大数。
},
"speed":{
"throttle":true,// 速度制限を有効または無効にします。false に設定した場合、mbps は無視されます。
"concurrent":1, // タスクの同時実行数。
"mbps":"12"// 速度制限レート (単位: Mbps)。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
} {
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"<your_data_source_name>",// データソース。
"newVersion":"true",// 新しい Tablestore Reader を使用します。
"mode": "normal",// 行モードでデータを読み取ります。
"isTimeseriesTable":"false",// テーブルが時系列テーブルではなく、ワイドテーブルであることを指定します。
"column":[// 列。
{
"name":"column1"// 列名。
},
{
"name":"column2"
},
{
"name":"column3"
},
{
"name":"column4"
},
{
"name":"column5"
}
],
"range":{
"split":[
{
"type":"STRING",
"value":"beginValue"
},
{
"type":"STRING",
"value":"splitPoint1"
},
{
"type":"STRING",
"value":"splitPoint2"
},
{
"type":"STRING",
"value":"splitPoint3"
},
{
"type":"STRING",
"value":"endValue"
}
],
"end":[
{
"type":"STRING",
"value":"endValue"
},
{
"type":"INT",
"value":"100"
},
{
"type":"INF_MAX"
},
{
"type":"INF_MAX"
}
],
"begin":[
{
"type":"STRING",
"value":"beginValue"
},
{
"type":"INT",
"value":"0"
},
{
"type":"INF_MIN"
},
{
"type":"INF_MIN"
}
]
},
"table":"<your_table_name>"// テーブル名。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容される最大エラーレコード数。
},
"speed":{
"throttle":true,// 速度制限を有効または無効にします。false に設定すると、mbps は無視されます。
"concurrent":1, // タスクの同時実行数。
"mbps":"12"// 速度制限のレート (Mbps)。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}</your_table_name></your_data_source_name>
行モードの時系列テーブル
",// データソース。
"table": "",// テーブル名。
// 時系列データを読み取るには、mode パラメーターを normal に設定する必要があります。
"mode": "normal",
// 時系列データを読み取るには、newVersion パラメーターを true に設定する必要があります。
"newVersion": "true",
// 時系列テーブルを指定します。
"isTimeseriesTable":"true",
// 読み取る時系列のメジャー名。任意。省略した場合は、すべてのデータが読み取られます。
"measurementName":"measurement_1",
"column": [
{
"name": "_m_name"
},
{
"name": "tagA",
"is_timeseries_tag":"true"
},
{
"name": "double_0",
"type":"DOUBLE"
},
{
"name": "string_0",
"type":"STRING"
},
{
"name": "long_0",
"type":"INT"
},
{
"name": "binary_0",
"type":"BINARY"
},
{
"name": "bool_0",
"type":"BOOL"
},
{
"type":"STRING",
"value":"testString"
}
]
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容されるエラーレコードの最大数。
},
"speed":{
"throttle":true,// 速度制限を有効または無効にします。false に設定した場合、mbps は無視されます。
"concurrent":1, // タスクの同時実行数。
"mbps":"12"// 速度制限のレート (単位: Mbps)。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
} {
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"<your_data_source_name>",// データソース。
"table": "<your_table_name>",// テーブル名。
// 時系列データを読み取るには、mode パラメーターを normal に設定する必要があります。
"mode": "normal",
// 時系列データを読み取るには、newVersion パラメーターを true に設定する必要があります。
"newVersion": "true",
// 時系列テーブルを指定します。
"isTimeseriesTable":"true",
// 読み取る時系列のメジャー名。オプション。省略した場合、すべてのデータが読み取られます。
"measurementName":"measurement_1",
"column": [
{
"name": "_m_name"
},
{
"name": "tagA",
"is_timeseries_tag":"true"
},
{
"name": "double_0",
"type":"DOUBLE"
},
{
"name": "string_0",
"type":"STRING"
},
{
"name": "long_0",
"type":"INT"
},
{
"name": "binary_0",
"type":"BINARY"
},
{
"name": "bool_0",
"type":"BOOL"
},
{
"type":"STRING",
"value":"testString"
}
]
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容される最大エラーレコード数。
},
"speed":{
"throttle":true,// 速度制限を有効または無効にします。false に設定すると、mbps は無視されます。
"concurrent":1, // タスクの同時実行数。
"mbps":"12"// 速度制限のレート (Mbps)。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}</your_table_name></your_data_source_name>
列モードのワイドテーブル
",// データソース。
"table":"",// テーブル名。
"newVersion":"true",// 新しい Tablestore リーダーを使用します。
"mode": "multiversion",// マルチバージョンモード。
"column":[// エクスポートする属性カラム。プライマリキーカラムはサポートされていません。
{"name":"mobile"},
{"name":"name"},
{"name":"age"},
{"name":"salary"},
{"name":"marry"}
],
"range":{// エクスポートする範囲。
"begin":[
{"type":"INF_MIN"},
{"type":"INF_MAX"}
],
"end":[
{"type":"INF_MAX"},
{"type":"INF_MIN"}
],
"split":[
]
},
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容されるエラーレコードの最大数。
},
"speed":{
"throttle":true,// 速度制限を有効または無効にします。false に設定した場合、mbps は無視されます。
"concurrent":1, // タスクの同時実行数。
"mbps":"12"// 速度制限レート (単位: Mbps)。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
} {
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"<your_data_source_name>",// データソース。
"table":"<your_table_name>",// テーブル名。
"newVersion":"true",// 新しい Tablestore Reader を使用します。
"mode": "multiversion",// 多バージョンモード。
"column":[// エクスポートする属性列。プライマリキー列はサポートされていません。
{"name":"mobile"},
{"name":"name"},
{"name":"age"},
{"name":"salary"},
{"name":"marry"}
],
"range":{// エクスポートする範囲。
"begin":[
{"type":"INF_MIN"},
{"type":"INF_MAX"}
],
"end":[
{"type":"INF_MAX"},
{"type":"INF_MIN"}
],
"split":[
]
},
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容される最大エラーレコード数。
},
"speed":{
"throttle":true,// 速度制限を有効または無効にします。false に設定すると、mbps は無視されます。
"concurrent":1, // タスクの同時実行数。
"mbps":"12"// 速度制限のレート (Mbps)。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}</your_table_name></your_data_source_name>
一般的な Reader スクリプトパラメーター
|
パラメーター |
説明 |
必須 |
デフォルト |
|
endpoint |
Tablestore インスタンスのエンドポイント。詳細については、「エンドポイント」をご参照ください。 |
はい |
なし |
|
accessId |
Tablestore の AccessKey ID。 |
はい |
なし |
|
accessKey |
Tablestore の AccessKey Secret。 |
はい |
なし |
|
instanceName |
Tablestore インスタンスの名前。インスタンスは、Tablestore サービスを実行および管理するために使用されるエンティティです。 Tablestore を有効化した後、管理コンソールでインスタンスを作成します。その後、インスタンス内でテーブルを作成および管理できます。 インスタンスはリソース管理の基本単位です。アクセスの制御とリソースメータリングはインスタンスレベルで実行されます。 |
はい |
なし |
|
table |
読み取るテーブルの名前。タスクごとに 1 つのテーブルのみ指定できます。 |
はい |
なし |
|
newVersion |
使用する Tablestore Reader プラグインのバージョンを指定します。
新しい Tablestore Reader は新機能を提供し、システムリソースの消費が少なくなります。新しいバージョンを使用することを推奨します。 新しいプラグインは下位互換性があります。既存のタスクは、 |
いいえ |
false |
|
mode |
読み取りモード。サポートされるモード:
このパラメーターは、 レガシの Tablestore Reader は mode 設定を無視し、行モードのみをサポートします。 |
いいえ |
normal |
|
isTimeseriesTable |
テーブルが時系列テーブルであるかどうかを指定します。
このパラメーターは、 レガシの Tablestore Reader は時系列テーブルをサポートしておらず、時系列テーブルは列モードで読み取ることはできません。 |
いいえ |
false |
追加の Reader スクリプトパラメーター
以下のセクションでは、行モードのワイドテーブル、行モードの時系列テーブル、列モードのワイドテーブルの 3 つのシナリオでデータを読み取るための追加パラメーターについて説明します。
行モードのパラメーター (ワイドテーブル)
|
パラメーター |
説明 |
必須 |
デフォルト |
|
column |
読み取る列を JSON 配列として指定します。Tablestore は NoSQL データベースであるため、列名を指定する必要があります。
|
はい |
なし |
|
begin および end |
begin および end パラメーターは、読み取るデータ範囲を指定します。 begin および end パラメーターは、Tablestore プライマリキーの範囲を指定します。無限の範囲には、 説明
たとえば、3 つのプライマリキー列
|
いいえ |
(INF_MIN, INF_MAX) |
|
split |
これはカスタムデータ分割を定義するための高度なパラメーターであり、通常は必要ありません。 split パラメーターを使用して、各分割のデータ範囲を定義できます。これにより、Tablestore でのデータホットスポットを防ぐことができます。次のタスク設定を考えます:
タスクが実行されると、データは 6 つのセグメントに分割され、同時に読み取られます。セグメント数はタスクの同時実行数よりも多くすることを推奨します。
|
いいえ |
split パラメーターが設定されていない場合、自動分割ロジックが使用されます。 このロジックは、パーティションキーの最小値と最大値を特定し、均等なセグメントを作成します。 パーティションキーは、整数型または文字列型にすることができます。整数型のキーは整数除算によってセグメント化されます。文字列型のキーは、最初の文字の Unicode コードポイントによってセグメント化されます。 |
行モードのパラメーター (時系列テーブル)
|
パラメーター |
説明 |
必須 |
デフォルト |
|
column |
列定義の配列。定数列と属性列を設定できます。 定数列の場合、次のパラメーターを設定します:
属性列の場合、次のパラメーターを設定します:
次のスクリプトは、4 つの列を読み取る例です:
|
はい |
なし |
|
measurementName |
読み取るタイムラインのメジャー名。省略した場合、テーブル内のすべてのデータが読み取られます。 |
いいえ |
なし |
|
timeRange |
読み取るデータの時間範囲。範囲は左閉じ右開きの区間
|
いいえ |
すべてのバージョン |
列モードのパラメーター (ワイドテーブル)
|
パラメーター |
説明 |
必須 |
デフォルト |
|
column |
エクスポートする列。列モードでは属性列のみがサポートされます。 フォーマット:
説明
|
はい |
すべての列 |
|
range |
読み取るデータ範囲。範囲は左閉じ右開きの区間
フォーマット:
|
いいえ |
すべてのデータ |
|
timeRange |
読み取るデータの時間範囲。範囲は左閉じ右開きの区間 フォーマット:
|
いいえ |
すべてのバージョン |
|
maxVersion |
各列で読み取るデータバージョンの最大数。有効な値:1 から INT32_MAX。 |
いいえ |
すべてのバージョン |
付録 II:Writer スクリプト例とパラメーター
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内で関連パラメーターを設定する必要があります。詳細については、「スクリプトモードでの設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。
Writer スクリプト例
行モード:ワイドテーブルへの書き込み
{
"type":"job",
"version":"2.0",// バージョン。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"table":"",// テーブル名。
"newVersion":"true",// 新しいバージョンの Tablestore プラグインを使用します。
"mode": "normal",// 行モードでデータを書き込みます。
"isTimeseriesTable":"false",// テーブルが時系列テーブルではなく、ワイドテーブルであることを指定します。
"primaryKey" : [// Tablestore テーブルのプライマリキー列。
{"name":"gid", "type":"INT"},
{"name":"uid", "type":"STRING"}
],
"column" : [// 書き込む列。
{"name":"col1", "type":"INT"},
{"name":"col2", "type":"DOUBLE"},
{"name":"col3", "type":"STRING"},
{"name":"col4", "type":"STRING"},
{"name":"col5", "type":"BOOL"}
],
"writeMode" : "PutRow" // 書き込みモード。
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容されるエラーレコード数。
},
"speed":{
"throttle":true,// 速度制限を有効または無効にします。false の場合、mbps パラメーターは無視されます。
"concurrent":1, // タスクの同時実行数。
"mbps":"12"// 速度制限のレート。単位:MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
行モード:時系列テーブルへの書き込み
{
"type":"job",
"version":"2.0",// バージョン。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"table": "testTimeseriesTableName01",
"mode": "normal",
"newVersion": "true",
"isTimeseriesTable":"true",
"timeunit":"microseconds",
"column": [
{
"name": "_m_name"
},
{
"name": "_data_source"
},
{
"name": "_tags"
},
{
"name": "_time"
},
{
"name": "string_1",
"type":"string"
},
{
"name":"tag3",
"is_timeseries_tag":"true"
}
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容されるエラーレコード数。
},
"speed":{
"throttle":true,// 速度制限を有効または無効にします。false の場合、mbps パラメーターは無視されます。
"concurrent":1, // タスクの同時実行数。
"mbps":"12"// 速度制限のレート。単位:MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
列モード:ワイドテーブルへの書き込み
{
"type":"job",
"version":"2.0",// バージョン。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"ots",// プラグイン名。
"parameter":{
"datasource":"",// データソース。
"table":"",
"newVersion":"true",
"mode":"multiVersion",
"primaryKey" : [
"gid",
"uid"
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容されるエラーレコード数。
},
"speed":{
"throttle":true,// 速度制限を有効または無効にします。false の場合、mbps パラメーターは無視されます。
"concurrent":1, // タスクの同時実行数。
"mbps":"12"// 速度制限のレート。単位:MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
一般的な Writer スクリプトパラメーター
|
パラメーター |
説明 |
必須 |
デフォルト |
|
datasource |
DataWorks データソースの名前。この名前は、スクリプトに設定したデータソースと一致する必要があります。 |
はい |
N/A |
|
endPoint |
Tablestore インスタンスのエンドポイント。詳細については、「エンドポイント」をご参照ください。 |
はい |
N/A |
|
accessId |
Tablestore にアクセスするための AccessKey ID。 |
はい |
N/A |
|
accessKey |
Tablestore にアクセスするための AccessKey Secret。 |
はい |
N/A |
|
instanceName |
Tablestore インスタンスの名前。インスタンスは、Tablestore のリソース管理の基本単位であり、アプリケーションのアクセスの制御とリソースメータリングに使用されます。Tablestore を有効化した後、テーブルを作成する前に管理コンソールでインスタンスを作成します。 Tablestore サービスを有効化した後、管理コンソールでインスタンスを作成し、そのインスタンス内でテーブルを作成および管理する必要があります。インスタンスは、Tablestore のリソース管理の基本単位です。アプリケーションのすべてのアクセスの制御とリソースメータリングは、インスタンスレベルで実行されます。 |
はい |
N/A |
|
table |
送信先テーブルの名前。1 つのテーブルのみ指定できます。 |
はい |
N/A |
|
newVersion |
使用する Tablestore プラグインのバージョンを指定します。
より多くの機能を提供し、リソース消費が少ないため、新しいプラグインの使用を推奨します。 newVersion: "true" 設定を追加することで、既存のタスクをアップグレードできます。 |
はい |
false |
|
mode |
書き込みモードを指定します。以下のモードがサポートされています:
このパラメーターは、newVersion が true に設定されている場合にのみ有効です。 レガシの Tablestore Writer は mode 設定を無視し、行モードでの読み取りのみをサポートします。 |
いいえ |
normal |
|
isTimeseriesTable |
送信先テーブルが時系列テーブルであるかどうかを指定します。
このパラメーターは、newVersion が true に設定され、mode が normal に設定されている場合にのみ有効です。列モードは時系列テーブルと互換性がないためです。 |
いいえ |
false |
追加の Writer スクリプトパラメーター
Tablestore プラグインは、行モードでのワイドテーブルへの書き込み、行モードでの時系列テーブルへの書き込み、列モードでのワイドテーブルへの書き込みのシナリオに応じて、異なるパラメーターを必要とします。以下のセクションでは、各ケースのパラメーターについて詳しく説明します。
行モードのパラメーター (ワイドテーブル)
|
パラメーター |
説明 |
必須 |
デフォルト |
|
primaryKey |
Tablestore テーブルのプライマリキー列。各プライマリキー列の名前と型を宣言する必要があります。 DataWorks は型変換をサポートしています。ソースデータが STRING または INT 型でない場合、プラグインはデータ型を変換します。例:
説明
Tablestore のプライマリキー列は STRING と INT のデータ型のみをサポートします。したがって、プラグイン設定ではこれら 2 つの型のみを指定できます。 |
はい |
N/A |
|
column |
書き込む属性列を JSON 配列として指定します。 例:
この例では、 説明
書き込みプロセス中に定数、関数、またはカスタム式はサポートされません。 |
はい |
N/A |
|
writeMode |
書き込みモードを指定します。以下のモードがサポートされています:
|
はい |
N/A |
|
enableAutoIncrement |
自動採番主キー列を持つテーブルに書き込むかどうかを指定します。
|
いいえ |
false |
|
requestTotalSizeLimitation |
1 行の最大サイズ (バイト単位)。 |
いいえ |
1MB |
|
attributeColumnSizeLimitation |
1 つの属性列の最大サイズ (バイト単位)。 |
いいえ |
2MB |
|
primaryKeyColumnSizeLimitation |
1 つのプライマリキー列の最大サイズ (バイト単位)。 |
いいえ |
1KB |
|
attributeColumnMaxCount |
属性列の最大数。 |
いいえ |
1,024 |
行モードのパラメーター (時系列テーブル)
|
パラメーター |
説明 |
必須 |
デフォルト |
|
column |
例:ソースレコードに以下の 6 つの列が含まれている場合:
以下の設定を使用します:
|
はい |
N/A |
|
timeunit |
_time タイムスタンプ列の単位を指定します。サポートされる値:NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS、MINUTES。 |
いいえ |
MICROSECONDS |
列モードのパラメーター (ワイドテーブル)
|
パラメーター |
説明 |
必須 |
デフォルト |
|
primaryKey |
テーブルのプライマリキー列。 設定コストを削減するため、レコード (行) 内の primaryKey の位置を設定する必要はありません。ただし、レコード形式は固定されている必要があります。primaryKey は行の先頭に配置し、columnName は primaryKey の後に配置する必要があります。レコードのフォーマットは次のとおりです: 例えば、次の 9 つのデータレコードがあるとします。
データは次のようにワイドテーブルに書き込まれます。
|
はい |
N/A |
|
columnNamePrefixFilter |
列名から削除するプレフィックス。 HBase からインポートされたデータでは、cf と qualifier が結合して columnName が形成されます。しかし、Tablestore は cf をサポートしていないため、cf をフィルターで除外する必要があります。 例: 説明
|
いいえ |
N/A |
よくある質問
-
Q:自動採番主キー列を持つ送信先テーブルにデータを書き込むように Tablestore Writer を設定するにはどうすればよいですか?
-
Tablestore Writer の設定には、以下の 2 つのパラメーターを含める必要があります:
"newVersion": "true", "enableAutoIncrement": "true", -
Tablestore Writer の設定で、自動採番主キー列の名前を指定する必要はありません。
-
primaryKey と column で指定された列の総数は、Tablestore Reader からの列数と一致する必要があります。
-
-
Q:時系列モデルの設定において、
_tagsフィールドとis_timeseries_tagフィールドの違いは何ですか?例:あるデータレコードには、phone=xiaomi、RAM=8G、camera=LEICA の 3 つのタグがあります。
-
データエクスポートの例 (Tablestore Reader)
-
上記のすべてのタグをまとめて 1 つの列としてエクスポートするには、以下の設定を使用します:
"column": [ { "name": "_tags", } ],DataWorks は、タグを以下の形式で 1 つの列としてエクスポートします:
["phone=xiaomi","camera=LEICA","RAM=8G"] -
phoneタグとcameraタグを別々の列としてエクスポートするには、以下の設定を使用します:"column": [ { "name": "phone", "is_timeseries_tag":"true", }, { "name": "camera", "is_timeseries_tag":"true", } ],DataWorks は、以下の形式で 2 つの列をエクスポートします:
xiaomi, LEICA
-
-
データインポートの例 (Tablestore Writer)
データソース (Tablestore Reader) が 2 つのデータ列を提供するとします:
-
1 つの列には
["phone=xiaomi","camera=LEICA","RAM=8G"]が含まれています。 -
もう 1 つの列には 6499 が含まれています。
これら 2 つの列のデータをタグとして処理するには、
以下の設定を使用します:"column": [ { "name": "_tags", }, { "name": "price", "is_timeseries_tag":"true", }, ],-
最初の列の設定では、
["phone=xiaomi","camera=LEICA","RAM=8G"]配列を tags フィールドにインポートします。 -
2 番目の列の設定では、その名前と値からタグ
price=6499を作成し、tags フィールドに追加します。
-
-