HBase データソースを使用すると、HBase からの読み取りと HBase への書き込みができます。このトピックでは、DataWorks における HBase のデータ同期機能について説明します。
サポートされるバージョン
HBase プラグインには、HBase プラグインと HBase{xx}xsql プラグインの 2 種類があります。HBase{xx}xsql プラグインには HBase と Phoenix の両方が必要です。
-
HBase プラグイン:
HBase0.94.x、HBase1.1.x、およびHBase2.xをサポートします。コードレス UI とコードエディタの両方がサポートされています。hbaseVersionパラメーターを使用してバージョンを指定します。-
HBase のバージョンが
HBase0.94.xの場合、Reader と Writer の両方で hbaseVersion を 094x に設定します。"reader": { "hbaseVersion": "094x" }"writer": { "hbaseVersion": "094x" } -
HBase のバージョンが HBase1.1.x または HBase2.x の場合、Reader と Writer の両方で hbaseVersion を 11x に設定します。
"reader": { "hbaseVersion": "11x" }"writer": { "hbaseVersion": "11x" }HBase1.1.x プラグインは HBase 2.0 と互換性があります。
-
-
HBase{xx}xsql プラグイン
-
HBase20xsql プラグイン:
HBase2.xとPhoenix5.xをサポートします。コードエディタのみがサポートされています。HBase11xsql プラグイン:
HBase1.1.xとPhoenix5.xをサポートします。コードエディタのみがサポートされています。 -
HBase{xx}xsql Writer プラグインは、HBase の SQL テーブル (Phoenix) にデータをバッチでインポートする簡単な方法を提供します。Phoenix は rowkey をエンコードします。HBase API を使用してデータを書き込むには、手動でのデータ変換が必要であり、これは複雑でエラーが発生しやすいプロセスです。
説明このプラグインは Phoenix JDBC ドライバーを使用して UPSERT ステートメントを実行し、データをテーブルにバッチで書き込みます。その高レベルインターフェイスにより、インデックステーブルの同期更新も可能です。
-
制限事項
|
HBase Reader |
HBase20xsql Reader |
HBase11xsql Writer |
|
|
|
機能
HBase Reader
HBase Reader は normal モードと multiVersionFixedColumn モードをサポートしています。設定手順については、HBase フィールドマッピングガイドをご参照ください。
-
normalモードでは、HBase Reader は HBase テーブルを標準の二次元テーブル (ワイドテーブル) として扱い、データの最新バージョンを読み取ります。hbase:007:0> scan 'student' ROW COLUMN+CELL s001 column=basic:age, timestamp=2026-03-09T14:41:40.240, value=20 s001 column=basic:name, timestamp=2026-03-09T14:41:40.214, value=Tom s001 column=score:english, timestamp=2026-03-09T14:41:40.333, value=90 s001 column=score:math, timestamp=2026-03-09T14:41:40.277, value=85 1 row(s) in 0.0580 seconds次の表に出力データを示します。
行キー
basic:age
basic:name
score:english
score:math
s001
20
Tom
90
85
-
multiVersionFixedColumnモード:HBase テーブルをナローテーブルとして読み取ります。返される各レコードは、rowKey、family:qualifier、timestamp、valueの 4 つのカラムで構成されます。読み取るカラムを明示的に指定する必要があります。各セルの値はレコードとして扱われます。複数のバージョンが存在する場合、複数のレコードが返されます。hbase:007:0> scan 'student',{VERSIONS=>5} ROW COLUMN+CELL s001 column=basic:age, timestamp=2026-03-09T14:41:40.240, value=20 s001 column=basic:age, timestamp=2026-03-09T14:30:00.100, value=19 s001 column=basic:name, timestamp=2026-03-09T14:41:40.214, value=Tom s001 column=score:english, timestamp=2026-03-09T14:41:40.333, value=90 s001 column=score:math, timestamp=2026-03-09T14:41:40.277, value=85 1 row(s) in 0.0260 seconds }行キー
family:qualifier
タイムスタンプ
値
s001
basic:age
2026-03-09T14:41:40.240
20
s001
basic:age
2026-03-09T14:30:00.100
19
s001
basic:name
2026-03-09T14:41:40.214
Tom
s001
score:english
2026-03-09T14:41:40.333
90
s001
score:math
2026-03-09T14:41:40.277
85
HBase Writer
-
rowkey生成ルール:現在、HBase Writer は、ソースから複数のフィールドを連結して HBase テーブルのrowkeyとして使用することをサポートしています。 -
HBase にデータを書き込むためのバージョン (タイムスタンプ) を指定できます。利用可能なオプションは次のとおりです:
-
現在の時刻をバージョンとして使用します。
-
ソースカラムをバージョンとして指定します。
-
時刻をバージョンとして指定します。
-
サポートされるデータ型
バッチ読み取り
-
この表は、サポートされている HBase データ型と、HBase Reader がそれらをどのように変換するかを示しています。
カテゴリ
Data Integration カラム型
データベースのデータ型
整数
long
short、int、および long
浮動小数点
double
float および double
文字列
string
binary_string および string
日付と時刻
date
date
バイト
bytes
bytes
ブール値
boolean
boolean
-
HBase20xsql Reader は、すべてではありませんが、ほとんどの Phoenix データ型をサポートしています。データ型がサポートされていることを確認してください。
-
この表は、HBase20xsql Reader が Phoenix データ型を DataX 内部型にマッピングする方法を示しています。
DataX 内部型
Phoenix データ型
long
INTEGER、TINYINT、SMALLINT、BIGINT
double
FLOAT、DECIMAL、DOUBLE
string
CHAR、VARCHAR
date
DATE、TIME、TIMESTAMP
bytes
BINARY、VARBINARY
boolean
BOOLEAN
バッチ書き込み
この表は、HBase Writer がサポートするデータ型をリストしています。
-
各カラムに設定されたデータ型は、HBase テーブルの対応するデータ型と一致する必要があります。
-
表に記載されているデータ型のみがサポートされています。
|
カテゴリ |
データベースのデータ型 |
|
整数 |
INT、LONG、および SHORT |
|
浮動小数点 |
FLOAT および DOUBLE |
|
ブール値 |
BOOLEAN |
|
文字列 |
STRING |
注意事項
接続テスト時に "tried to access method com.google.common.base.Stopwatch" エラーが発生した場合は、データソース設定に hbaseVersion プロパティを追加して HBase のバージョンを指定してください。
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、パラメーターの意味を理解できます。
データ同期タスクの開発
同期タスクの設定のエントリポイントと手順については、次の設定ガイドをご参照ください。
単一テーブルのバッチ同期の設定
-
詳細については、「コードレス UI 設定」および「スクリプトモード設定」をご参照ください。
HBase はスキーマレスなデータソースであるため、コードレス UI ではデフォルトでフィールドマッピングが表示されません。手動で設定する必要があります。
HBase をデータソースとして使用する場合、まず Output Mode を選択する必要があります:normal モードまたは multiVersionFixedColumn モード。
フィールドマッピングの設定は、モードごとに異なります:
-
normal モード:これはデフォルトのモードです。このモードは HBase テーブルを標準の二次元テーブルとして読み取り、データの最新バージョンを取得します。HBase をデータソースとして使用する場合、Source Field と Target Field の間のマッピングを設定する必要があります。ソースフィールドと宛先フィールドは 1 対 1 でマッピングされます。ソーステーブルには固定フィールドがないため、フィールドはデフォルトで順序によってマッピングされます。マッピングを変更するには、手動でフィールドの順序を編集する必要があります。
新バージョン
フィールドマッピング設定では、マッピングは `rowkey` → `rowkey`、`basic:age` → `age`、`basic:name` → `name`、`score:english` → `english`、`score:math` → `math` となります。ソースフィールドは JSON 形式で表示され、`name` と `type` (両方とも `string`) プロパティを含みます。
旧バージョン
フィールドマッピング設定では、ソースフィールドは
Type|ColumnFamily:ColumnName形式で表示されます。これにはstring|rowkey、string|basic:age、string|basic:name、string|score:english、string|score:mathが含まれます。これらはそれぞれターゲットフィールドのrowkey、age、name、english、mathにマッピングされます。ターゲットテーブルには、rowkey、age、name、english、math、pt などのフィールドが含まれます。例:rowkey=s001, age=20, name=Tom, english=90, math=85, pt=222222。
-
multiVersionFixedColumn モード:各出力レコードは 4 つのカラム (rowKey、family:qualifier、timestamp、value) で構成され、このモードでは複数のデータバージョンを読み取ることができます。Source Field は
ColumnFamily:Qualifier形式で設定されます (例:basic:age)。宛先テーブルには row_key、cf、timestamp_col、value の 4 つの固定カラムがあり、マッピング設定は不要です。新バージョン
フィールドマッピングエリアで、ソースフィールドをターゲットフィールドにマッピングします。ソースフィールドは JSON 形式です。マッピング例:
{"name":"rowkey","type":"string"}はターゲットフィールド rowkey にマッピングされ、{"name":"basic:age","type":"string"}は family に、{"name":"basic:name","type":"string"}は timestamp に、{"name":"score:english","type":"string"}は value にマッピングされます。マッピングされていないソースフィールド{"name":"score:math","type":"string"}はシステムによって同期されません。どちらかの側の 編集 ボタンをクリックして、それぞれソースフィールドとターゲットフィールドを編集できます。旧バージョン
フィールドマッピングエリアでは、ソースフィールド には
string|rowkey、string|basic:age、string|basic:name、string|score:english、string|score:mathが含まれます。ターゲットフィールド にはrowkey、family、timestamp、valueが含まれます。ソースフィールドとターゲットフィールドは行ごとにマッピングされます。ターゲットテーブルには、row_key、cf、timestamp_col、value の 4 つの固定カラムが含まれます。例:row_key=s001, cf=basic:age, timestamp_col=1234567890, value=20。
-
HBase をデータ宛先として使用する場合 (normal モードのみサポート)、Target Field と rowkey を設定する必要があります。rowkey フィールドは、複数のソースフィールドを連結して形成できます。
-
-
スクリプトモードのパラメーターとスクリプト例については、「付録:スクリプト例とパラメーターの説明」をご参照ください。
よくある質問
-
Q:適切な同時実行数の設定は何ですか?インポート速度が遅い場合、同時実行数を増やすと改善されますか?
A:データインポートプロセスにおける Java 仮想マシン (JVM) のデフォルトのヒープサイズは 2 GB です。同時実行はマルチスレッドによって実装され、チャネル数によって設定されます。スレッド数が多すぎると、頻繁なガベージコレクション (GC) により、インポート速度を向上させることなくパフォーマンスが低下する可能性があります。5〜10 の同時スレッド (チャネル) を使用することを推奨します。
-
Q:`batchSize` の最適な値は何ですか?
A:デフォルト値は 256 です。行サイズに基づいて最適な `batchSize` を計算します。通常、1 つのバッチには 2〜4 MB のデータが含まれるようにします。このデータ量を 1 行のサイズで割ることで、推奨される `batchSize` を決定します。
-
Q:HBase から
multiVersionFixedColumnモードでデータを読み取る際に、java.lang.StringIndexOutOfBoundsException: String index out of range: -1エラーが発生します。これを解決するにはどうすればよいですか?A:このエラーは通常、カラム設定の
nameフィールドがcolumnFamily:qualifier(columnFamily:qualifier) 形式に従っていないために発生します。たとえば、basic:ageの代わりにageのように修飾子のみを指定している可能性があります。これを解決するには、rowkeyを除くすべてのカラムの `name` がcolumnFamily:qualifier形式であることを確認してください。
付録:サンプルスクリプトとパラメーター
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内で関連するパラメーターを設定する必要があります。詳細については、「スクリプトモード設定」をご参照ください。以下の情報は、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明しています。
HBase Reader の例
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"hbase",// プラグイン名。
"parameter":{
"mode":"normal",// HBase からデータを読み取るモードを指定します。有効な値:`normal` および `multiVersionFixedColumn`。
"scanCacheSize":"256",// RPC ごとにサーバーからフェッチする行数を指定します。
"scanBatchSize":"100",// RPC ごとにサーバーからフェッチするカラム数を指定します。
"hbaseVersion":"094x/11x",// HBase のバージョン。
"column":[// 読み取るフィールド。
{
"name":"rowkey",// フィールド名。
"type":"string"// データ型。
},
{
"name":"basic:age",
"type":"string"
},
{
"name":"basic:name",
"type":"string"
},
{
"name":"score:english",
"type":"string"
},
{
"name":"score:math",
"type":"string"
}
],
"range":{// 読み取る rowkey の範囲を指定します。
"endRowkey":"",// 終了 rowkey。
"isBinaryRowkey":true,// startRowkey と endRowkey にバイナリ変換を使用するかどうかを指定します。デフォルト値は false です。
"startRowkey":""// 開始 rowkey。
},
"maxVersion":"",// マルチバージョンモードで読み取るバージョン数を指定します。
"encoding":"UTF-8",// エンコード形式。
"table":"student",// テーブル名。
"hbaseConfig":{// HBase クラスターの接続設定。JSON 形式。
"hbase.zookeeper.quorum":"hostname",
"hbase.rootdir":"hdfs://ip:port/database",
"hbase.cluster.distributed":"true"
}
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"odps",// 宛先のプラグイン名。この例では MaxCompute を使用します。別の Writer プラグインに置き換えることができます。
"parameter":{
"partition":"",// 宛先テーブルのパーティション情報。非パーティションテーブルには不要です。
"truncate":true,// データを書き込む前に宛先テーブルまたはパーティションをクリアするかどうかを指定します。
"datasource":"odps_datasource",// MaxCompute データソース名。
"column":[// 宛先フィールド。
"rowkey",
"basic_age",
"basic_name",
"score_english",
"score_math"
],
"table":"student_target"// 宛先 MaxCompute テーブルの名前。
},
"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"
}
]
}
}
HBase Reader スクリプト (multiVersionFixedColumn モード)
multiVersionFixedColumn モードで HBase からデータを読み取り、MaxCompute に書き込む完全なスクリプトの例を以下に示します。このモードでは、HBase の各セルの値が個別のレコードに変換されます。各レコードは、rowkey、family:qualifier、timestamp、value の 4 つのカラムで構成されます。
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"hbase",// プラグイン名。
"parameter":{
"mode":"multiVersionFixedColumn",// HBase からデータを読み取るモード。この例では multiVersionFixedColumn モードを使用します。
"scanCacheSize":"256",// HBase クライアントが各リモートプロシージャコール (RPC) でサーバーから読み取る行数。
"scanBatchSize":"100",// HBase クライアントが各 RPC でサーバーから読み取るカラム数。
"hbaseVersion":"20x",// HBase のバージョン。
"datasource":"hbase_datasource",// HBase データソース名。
"column":[// 読み取るカラム。最初のカラムは rowkey である必要があります。他のカラムの名前は「カラムファミリー:修飾子」形式である必要があります。
{
"name":"rowkey",// rowkey カラム。
"type":"string"
},
{
"name":"basic:age",// basic カラムファミリーの age カラム。
"type":"string"
},
{
"name":"basic:name",// basic カラムファミリーの name カラム。
"type":"string"
},
{
"name":"score:english",// score カラムファミリーの english カラム。
"type":"string"
},
{
"name":"score:math",// score カラムファミリーの math カラム。
"type":"string"
}
],
"range":{
"isBinaryRowkey":false
},
"maxVersion":"-1",// 読み取るバージョンの最大数。このパラメーターは multiVersionFixedColumn モードで必須です。-1 の値はすべてのバージョンを読み取ることを指定します。
"encoding":"UTF-8",// エンコード形式。
"table":"student"// HBase テーブル名。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"odps",// 宛先プラグインの名前。この例では MaxCompute を使用します。
"parameter":{
"partition":"",// 宛先テーブルのパーティション。このパラメーターは非パーティションテーブルには不要です。
"truncate":true,// true に設定すると、データを書き込む前に宛先テーブルまたはパーティションをクリアします。
"datasource":"odps_datasource",// MaxCompute データソース名。
"column":[// 宛先には、ソースの rowkey、family:qualifier、timestamp、value にそれぞれ対応する 4 つの固定カラムがあります。
"row_key",
"cf",
"timestamp_col",
"value"
],
"table":"hbase_multiversion_target"// 宛先 MaxCompute テーブルの名前。
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容されるエラーレコードの最大数。
},
"speed":{
"throttle":false,// レート制限なし。
"concurrent":2// ジョブの同時実行数。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
MaxCompute の宛先テーブルは事前に作成しておく必要があります。例:CREATE TABLE IF NOT EXISTS hbase_multiversion_target (row_key STRING, cf STRING, timestamp_col STRING, value STRING);
HBase Reader スクリプトパラメーター
|
パラメーター |
説明 |
必須 |
デフォルト |
|
haveKerberos |
haveKerberos が true の場合、HBase クラスターは Kerberos 認証を必要とします。 説明
|
いいえ |
false |
|
hbaseConfig |
HBase クラスターへの接続に必要な設定を JSON 形式で指定します。hbase.zookeeper.quorum パラメーターは必須で、HBase の ZooKeeper エンドポイントを指定します。スキャンキャッシュやバッチ設定など、他の HBase クライアント設定を追加して、サーバーとの対話を最適化することもできます。 説明
ApsaraDB for HBase インスタンスに接続する場合は、その内部ネットワークエンドポイントを使用する必要があります。 |
はい |
なし |
|
mode |
HBase でサポートされている読み取りモードは normal と multiVersionFixedColumn です。 |
はい |
なし |
|
table |
読み取る HBase テーブルの名前。テーブル名は大文字と小文字を区別します。 |
はい |
なし |
|
encoding |
バイナリの HBase byte[] 値を文字列に変換するために使用されるエンコード形式 (UTF-8 や GBK など)。 |
いいえ |
utf-8 |
|
column |
読み取る HBase フィールド。このパラメーターは normal モードと multiVersionFixedColumn モードで必須です。
|
はい |
なし |
|
maxVersion |
マルチバージョンモードで読み取るセルのバージョンの最大数。有効な値は |
|
なし |
|
range |
読み取る rowkey の範囲を指定します。
|
いいえ |
なし |
|
scanCacheSize |
1 回のリモートプロシージャコール (RPC) で HBase からフェッチする行数。 |
いいえ |
256 |
|
scanBatchSize |
1 回の RPC で HBase からフェッチするカラム数。-1 に設定するとすべてのカラムをフェッチします。 説明
scanBatchSize の値は、データ品質のリスクを避けるために、実際のカラム数より大きくする必要があります。 |
いいえ |
100 |
HBase Writer スクリプト
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"hbase",// プラグイン名。
"parameter":{
"mode":"normal",// HBase の書き込みモード。
"walFlag":"false",// `false` に設定すると、先行書き込みログ (WAL) を無効にします。
"hbaseVersion":"094x",// HBase のバージョン。
"rowkeyColumn":[// HBase の rowkey を構成するカラム。
{
"index":"0",// ソースデータカラムのインデックス。
"type":"string"// rowkey のこの部分のデータ型。
},
{
"index":"-1",
"type":"string",
"value":"_"
}
],
"nullMode":"skip",// ソースからの null 値の処理方法を指定します。
"column":[// HBase テーブルの宛先カラム。
{
"name":"columnFamilyName1:columnName1",// カラム名。`family:qualifier` 形式。
"index":"0",// ソースデータカラムのインデックス。
"type":"string"// カラム値のデータ型。
},
{
"name":"columnFamilyName2:columnName2",
"index":"1",
"type":"string"
},
{
"name":"columnFamilyName3:columnName3",
"index":"2",
"type":"string"
}
],
"encoding":"utf-8",// 文字エンコーディング。
"table":"",// 宛先 HBase テーブルの名前。
"hbaseConfig":{// HBase クラスター接続の設定。JSON 形式。
"hbase.zookeeper.quorum":"hostname",
"hbase.rootdir":"hdfs: //ip:port/database",
"hbase.cluster.distributed":"true"
}
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容されるエラーレコードの最大数。
},
"speed":{
"throttle":true,// レート制限を有効 (`true`) または無効 (`false`) にします。`true` の場合、レートは `mbps` パラメーターによって定義されます。
"concurrent":1, // 同時書き込みタスクの数。
"mbps":"12"// 最大転送レート (メガバイト/秒、MB/s)。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
HBase Writer スクリプトパラメーター
|
パラメーター |
説明 |
必須 |
デフォルト |
|
haveKerberos |
HBase クラスターが Kerberos 認証を必要とするかどうかを指定します。このパラメーターを 説明
|
いいえ |
|
|
hbaseConfig |
HBase クラスターへの接続に関する JSON 設定。 説明
ApsaraDB for HBase データベースに接続するには、その内部ネットワークエンドポイントを使用する必要があります。 |
はい |
なし |
|
mode |
HBase へのデータ書き込みモード。現在、 |
はい |
なし |
|
table |
書き込み先の HBase テーブルの名前。このパラメーターは大文字と小文字を区別します。 |
はい |
なし |
|
encoding |
STRING データを |
いいえ |
|
|
column |
データを書き込むカラムの設定:
|
はい |
なし |
|
rowkeyColumn |
書き込み先の HBase テーブルの rowkey カラム:
フォーマットは次のとおりです。
|
はい |
なし |
|
versionColumn |
書き込み操作のタイムスタンプを指定します。値はソースカラムまたは定数から取得できます。このパラメーターが設定されていない場合、システムの現在時刻が使用されます。
以下の例にフォーマットを示します。
|
いいえ |
なし |
|
nullMode |
ソースデータの null 値の処理方法を指定します:
|
いいえ |
|
|
walFlag |
HBase クライアントがデータを送信する際、まず操作を先行書き込みログ (WAL) に書き込み、その後 MemStore に書き込みます。このプロセスにより、データの耐久性が保証されます。書き込みパフォーマンスを向上させるために、このパラメーターを |
いいえ |
|
|
writeBufferSize |
HBase クライアントの書き込みバッファのサイズ (バイト単位)。このパラメーターは
|
いいえ |
8 MB |
|
fileSystemUsername |
同期タスク中に Ranger の権限問題を解決するには、ウィザードベースのタスクをスクリプトモードに変換します。次に、 |
いいえ |
なし |
HBase20xsql Reader デモ
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"hbase20xsql",// プラグイン名。
"parameter":{
"queryServerAddress": "http://127.0.0.1:8765", // Phoenix QueryServer エンドポイント。
"serialization": "PROTOBUF", // QueryServer シリアル化フォーマット。
"table": "TEST", // 読み取るテーブル。
"column": ["ID", "NAME"], // 読み取るカラム。
"splitKey": "ID" // シャーディングキー。テーブルのプライマリキーである必要があります。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// 許容される最大エラーレコード数。
},
"speed":{
"throttle":true,// レート制限を切り替えます。true の場合、レートは mbps パラメーターによって制限されます。
"concurrent":1,// 同時実行ジョブの数。
"mbps":"12"// レート制限 (MB/s)。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
HBase20xsql Reader パラメーター
|
パラメーター |
説明 |
必須 |
デフォルト |
|
queryServerAddress |
Phoenix QueryServer のエンドポイント。HBase20xsql Reader プラグインは、軽量クライアントを使用してこのエンドポイントに接続します。ApsaraDB for HBase Performance-enhanced Edition (Lindorm) のユーザー認証情報を渡すには、queryServerAddress 文字列に |
はい |
なし |
|
serialization |
Phoenix QueryServer が使用するシリアル化プロトコル。 |
いいえ |
PROTOBUF |
|
table |
読み取るテーブルの名前。名前は大文字と小文字を区別します。 |
はい |
なし |
|
schema |
テーブルを含むスキーマ。 |
いいえ |
なし |
|
column |
同期するカラム。JSON 配列を使用してカラム名を定義します。このパラメーターを指定しないか、空のままにすると、Reader はすべてのカラムを読み取ります。 |
いいえ |
すべてのカラム |
|
splitKey |
テーブルが読み取られると、シャーディングされます。splitKey パラメーターを指定すると、splitKey が表すフィールドがデータシャーディングに使用されます。これにより、データ同期は同時タスクを開始し、パフォーマンスを向上させることができます。2 つの異なるシャーディング方法から選択できます。splitPoint パラメーターが空の場合、テーブルはデフォルトで方法 1 に基づいて自動的にシャーディングされます:
|
はい |
なし |
|
splitPoints |
シャーディングキーの最小値と最大値に基づく自動シャーディングでは、データのホットスポットを防げない場合があります。最適なパフォーマンスを得るには、HBase Regions の startkey と endkey に基づいてカスタムのシャーディングポイントを定義することを推奨します。これにより、各同時タスクが単一の Region をクエリすることが保証されます。 |
いいえ |
なし |
|
where |
テーブルクエリに追加するフィルター条件。HBase20xsql Reader は、column、table、where パラメーターに基づいて SQL クエリを構築し、データを抽出します。 |
いいえ |
なし |
|
querySql |
where パラメーターでは不十分な複雑なフィルタリングシナリオの場合、カスタム SQL クエリを提供できます。このパラメーターを設定すると、Reader は column、table、where、splitKey パラメーターを無視します。queryServerAddress パラメーターは引き続き必須です。 |
いいえ |
なし |
HBase11xsql Writer の例
{
"type": "job",
"version": "1.0",
"configuration": {
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle":true,// レート制限を有効にします。false に設定すると、mbps パラメーターは無視されます。
"concurrent":1, // 同時実行ジョブの数。
"mbps":"1"// レート制限 (MB/s)。
}
},
"reader": {
"plugin": "odps",
"parameter": {
"datasource": "",
"table": "",
"column": [],
"partition": ""
}
},
"plugin": "hbase11xsql",
"parameter": {
"table": "宛先 HBase テーブルの名前。名前は大文字と小文字を区別します。",
"hbaseConfig": {
"hbase.zookeeper.quorum": "宛先 HBase クラスターの ZooKeeper エンドポイント。",
"zookeeper.znode.parent": "宛先 HBase クラスターの znode。"
},
"column": [
"columnName"
],
"batchSize": 256,
"nullMode": "skip"
}
}
}
HBase11xsql Writer パラメーター
|
パラメーター |
説明 |
必須 |
デフォルト |
|
plugin |
プラグインの名前を指定します。値は hbase11xsql である必要があります。 |
はい |
なし |
|
table |
宛先テーブルの名前を指定します。このパラメーターは大文字と小文字を区別します。Phoenix のテーブル名は通常、大文字です。 |
はい |
なし |
|
column |
カラムの名前を指定します。名前は大文字と小文字を区別します。Phoenix のカラム名は通常、大文字です。 説明
|
はい |
なし |
|
hbaseConfig |
HBase クラスターのエンドポイントを指定します。ZooKeeper (ZK) エンドポイントを ip1,ip2,ip3 の形式で指定する必要があります。 説明
|
はい |
なし |
|
batchSize |
バッチ書き込みの最大行数を指定します。 |
いいえ |
256 |
|
nullMode |
ソースデータからの null 値の処理方法を指定します。
|
いいえ |
skip |