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

DataWorks:HBase データソース

最終更新日:Jun 23, 2026

HBase データソースを使用すると、HBase からの読み取りと HBase への書き込みができます。このトピックでは、DataWorks における HBase のデータ同期機能について説明します。

サポートされるバージョン

HBase プラグインには、HBase プラグインと HBase{xx}xsql プラグインの 2 種類があります。HBase{xx}xsql プラグインには HBase と Phoenix の両方が必要です。

  1. HBase プラグイン:

    HBase0.94.xHBase1.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 と互換性があります。
  2. HBase{xx}xsql プラグイン

    1. HBase20xsql プラグイン:HBase2.xPhoenix5.x をサポートします。コードエディタのみがサポートされています。

      HBase11xsql プラグイン:HBase1.1.xPhoenix5.x をサポートします。コードエディタのみがサポートされています。

    2. HBase{xx}xsql Writer プラグインは、HBase の SQL テーブル (Phoenix) にデータをバッチでインポートする簡単な方法を提供します。Phoenix は rowkey をエンコードします。HBase API を使用してデータを書き込むには、手動でのデータ変換が必要であり、これは複雑でエラーが発生しやすいプロセスです。

      説明

      このプラグインは Phoenix JDBC ドライバーを使用して UPSERT ステートメントを実行し、データをテーブルにバッチで書き込みます。その高レベルインターフェイスにより、インデックステーブルの同期更新も可能です。

制限事項

HBase Reader

HBase20xsql Reader

HBase11xsql Writer

  • テーブルのシャーディングは単一のカラムに制限され、そのカラムはプライマリキーである必要があります。

  • ジョブの同時実行数に基づく均等なシャーディングの場合、シャーディングカラムは整数または文字列である必要があります。

  • テーブル名、スキーマ名、カラム名は大文字と小文字を区別し、Phoenix テーブルのケーシングと一致する必要があります。

  • HBase20xsql Reader は Phoenix QueryServer を介してのみデータを読み取ることができます。したがって、HBase20xsql Reader を使用するには Phoenix QueryServer を起動する必要があります。

  • Data Integration 用サーバーレスリソースグループ (推奨) のみがサポートされています。

  • タイムスタンプ付きデータのインポートはサポートされていません。

  • Phoenix で作成されたテーブルのみがサポートされ、ネイティブの HBase テーブルはサポートされていません。

  • Writer のカラム順序は Reader のカラム順序と一致する必要があります。Reader のカラム順序は、各出力行のカラムのシーケンスを決定します。Writer のカラム順序は、受信データで期待されるカラムのシーケンスを決定します。例:

    • Reader のカラム順序は c1、c2、c3、c4 です。

    • Writer のカラム順序は x1、x2、x3、x4 です。

    この場合、カラム c1 の値はカラム x1 に割り当てられます。Writer のカラム順序が x1、x2、x4、x3 の場合、カラム c3 の値はカラム x4 に割り当てられ、カラム c4 の値はカラム x3 に割り当てられます。

  • インデックス付きテーブルにデータをインポートすると、関連するすべてのインデックスが同期的に更新されます。

機能

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 テーブルをナローテーブルとして読み取ります。返される各レコードは、rowKeyfamily:qualifiertimestampvalue の 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 FieldTarget 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|rowkeystring|basic:agestring|basic:namestring|score:englishstring|score:math が含まれます。これらはそれぞれターゲットフィールドの rowkeyagenameenglishmath にマッピングされます。

      ターゲットテーブルには、rowkeyagenameenglishmathpt などのフィールドが含まれます。例:rowkey=s001, age=20, name=Tom, english=90, math=85, pt=222222。

    • multiVersionFixedColumn モード:各出力レコードは 4 つのカラム (rowKey、family:qualifier、timestamp、value) で構成され、このモードでは複数のデータバージョンを読み取ることができます。Source FieldColumnFamily: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|rowkeystring|basic:agestring|basic:namestring|score:englishstring|score:math が含まれます。ターゲットフィールド には rowkeyfamilytimestampvalue が含まれます。ソースフィールドとターゲットフィールドは行ごとにマッピングされます。

      ターゲットテーブルには、row_keycftimestamp_colvalue の 4 つの固定カラムが含まれます。例:row_key=s001, cf=basic:age, timestamp_col=1234567890, value=20。

    • HBase をデータ宛先として使用する場合 (normal モードのみサポート)、Target Fieldrowkey を設定する必要があります。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 の各セルの値が個別のレコードに変換されます。各レコードは、rowkeyfamily:qualifiertimestampvalue の 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 認証を必要とします。

説明
  • このパラメーターを true に設定した場合、次のパラメーターも設定する必要があります:

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

  • HBase クラスターで Kerberos 認証が有効になっていない場合、これらのパラメーターを設定する必要はありません。

いいえ

false

hbaseConfig

HBase クラスターへの接続に必要な設定を JSON 形式で指定します。hbase.zookeeper.quorum パラメーターは必須で、HBase の ZooKeeper エンドポイントを指定します。スキャンキャッシュやバッチ設定など、他の HBase クライアント設定を追加して、サーバーとの対話を最適化することもできます。

説明

ApsaraDB for HBase インスタンスに接続する場合は、その内部ネットワークエンドポイントを使用する必要があります。

はい

なし

mode

HBase でサポートされている読み取りモードは normalmultiVersionFixedColumn です。

はい

なし

table

読み取る HBase テーブルの名前。テーブル名は大文字と小文字を区別します。

はい

なし

encoding

バイナリの HBase byte[] 値を文字列に変換するために使用されるエンコード形式 (UTF-8 や GBK など)。

いいえ

utf-8

column

読み取る HBase フィールド。このパラメーターは normal モードと multiVersionFixedColumn モードで必須です。

  • normal モードの場合:

    name パラメーターは読み取る HBase カラムを指定します。rowkey を除き、このパラメーターの値は カラムファミリー:修飾子 形式である必要があります。type パラメーターはソースデータの型を指定し、format パラメーターは日付型のフォーマットを指定します。value パラメーターはカラムが定数であることを指定します。value パラメーターを使用する場合、データは HBase から読み取られず、代わりに指定された値に基づいて対応するカラムが自動的に生成されます。設定フォーマットは次のとおりです:

    "column": 
    [
    {
      "name": "rowkey",
      "type": "string"
    },
    {
      "value": "test",
      "type": "string"
    }
    ]

    normal モードでは、指定するカラム情報に対して type パラメーターが必須であり、name または value パラメーターのいずれかを指定する必要があります。

  • multiVersionFixedColumn モード

    name パラメーターは読み取る HBase カラムを指定します。rowkey を除き、値は カラムファミリー:修飾子 形式である必要があります。type パラメーターはソースデータの型を指定し、format パラメーターは日付型のフォーマットを指定します。multiVersionFixedColumn モードでは定数カラムはサポートされていません。設定フォーマットは次のとおりです:

    "column": 
    [
    {
      "name": "rowkey",
      "type": "string"
    },
    {
      "name": "info:age",
      "type": "string"
    }
    ]

はい

なし

maxVersion

マルチバージョンモードで読み取るセルのバージョンの最大数。有効な値は -1 (すべてのバージョン) または 1 より大きい整数です。

multiVersionFixedColumn モードで必須です。

なし

range

読み取る rowkey の範囲を指定します。

  • startRowkey:開始 rowkey を指定します。

  • endRowkey:終了 rowkey を指定します。

  • isBinaryRowkeystartRowkeyendRowkeybyte[] に変換する方法を指定します。デフォルト値は false です。このパラメーターを true に設定すると、Bytes.toBytesBinary(rowkey) メソッドが呼び出されます。このパラメーターを false に設定すると、Bytes.toBytes(rowkey) メソッドが呼び出されます。設定フォーマットは次のとおりです:

    "range": {
    "startRowkey": "aaa",
    "endRowkey": "ccc",
    "isBinaryRowkey":false
    }

いいえ

なし

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 認証を必要とするかどうかを指定します。このパラメーターを true に設定すると、Kerberos 認証が有効になります。

説明
  • このパラメーターを true に設定した場合、次の Kerberos 認証パラメーターを設定する必要があります:

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

  • Kerberos 認証が無効になっている場合、これらのパラメーターは不要です。

いいえ

false

hbaseConfig

HBase クラスターへの接続に関する JSON 設定。hbase.zookeeper.quorum パラメーターは必須で、HBase クラスターの ZooKeeper エンドポイントを指定します。サーバーとの対話を最適化するために、スキャンキャッシュやバッチ設定など、他の HBase クライアント設定を追加することもできます。

説明

ApsaraDB for HBase データベースに接続するには、その内部ネットワークエンドポイントを使用する必要があります。

はい

なし

mode

HBase へのデータ書き込みモード。現在、normal モードのみがサポートされています。

はい

なし

table

書き込み先の HBase テーブルの名前。このパラメーターは大文字と小文字を区別します。

はい

なし

encoding

STRING データを HBase byte[] に変換するためのエンコード形式。有効な値:UTF-8 および GBK

いいえ

UTF-8

column

データを書き込むカラムの設定:

  • index:Reader からの対応するカラムのインデックスを 0 から始まる値で指定します。

  • name:HBase テーブル内のカラムを指定します。フォーマットは カラムファミリー:カラム名 である必要があります。

  • type:書き込み操作のデータ型を指定します。これはデータを HBase の byte[] 形式に変換するために使用されます。

はい

なし

rowkeyColumn

書き込み先の HBase テーブルの rowkey カラム:

  • index:Reader からの対応するカラムのインデックスを 0 から始まる値で指定します。カラムが定数の場合は、このパラメーターを -1 に設定します。

  • type:書き込み操作のデータ型を指定します。これはデータを HBase の byte[] 形式に変換するために使用されます。

  • value:定数。複数のフィールドを連結するための区切り文字としてよく使用されます。rowkey は定数のみで構成することはできません。

フォーマットは次のとおりです。

"rowkeyColumn": [
          {
            "index":0,
            "type":"string"
          },
          {
            "index":-1,
            "type":"string",
            "value":"_"
          }
      ]

はい

なし

versionColumn

書き込み操作のタイムスタンプを指定します。値はソースカラムまたは定数から取得できます。このパラメーターが設定されていない場合、システムの現在時刻が使用されます。

  • index:Reader からの対応するカラムのインデックスを 0 から始まる値で指定します。値が LONG 型に変換できることを確認してください。

  • type:データ型が Date の場合、システムは yyyy-MM-dd HH:mm:ss および yyyy-MM-dd HH:mm:ss SSS 形式を使用して値の解析を試みます。特定のタイムスタンプ値を使用する場合は、index を -1 に設定します。

  • valueLONG 型の定数タイムスタンプ値。

以下の例にフォーマットを示します。

  • "versionColumn": {
      "index": 1
    }
  • "versionColumn": {
      "index": -1,
      "value": 123456789
    }

いいえ

なし

nullMode

ソースデータの null 値の処理方法を指定します:

  • skip:HBase へのカラムの書き込みをスキップします。

  • emptyHConstants.EMPTY_BYTE_ARRAY (new byte [0]) を書き込みます。

いいえ

skip

walFlag

HBase クライアントがデータを送信する際、まず操作を先行書き込みログ (WAL) に書き込み、その後 MemStore に書き込みます。このプロセスにより、データの耐久性が保証されます。書き込みパフォーマンスを向上させるために、このパラメーターを false に設定して WAL を無効にすることができます。

いいえ

false

writeBufferSize

HBase クライアントの書き込みバッファのサイズ (バイト単位)。このパラメーターは autoflush と一緒に使用されます。

autoflush (デフォルトでは無効):

  • truetrue の場合、クライアントは各 put 操作に対してリクエストを送信し、この書き込みバッファは使用されません。

  • false:HBase クライアントは、クライアント側の書き込みキャッシュがいっぱいになった場合にのみ、HBase サーバーに書き込みリクエストを送信します。

いいえ

8 MB

fileSystemUsername

同期タスク中に Ranger の権限問題を解決するには、ウィザードベースのタスクをスクリプトモードに変換します。次に、fileSystemUsername パラメーターを必要な権限を持つユーザーに設定します。これにより、DataWorks はこの指定されたユーザーとして HBase にアクセスします。

いいえ

なし

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 文字列に userpassword プロパティを追加します。例:http://127.0.0.1:8765;user=root;password=root

はい

なし

serialization

Phoenix QueryServer が使用するシリアル化プロトコル。

いいえ

PROTOBUF

table

読み取るテーブルの名前。名前は大文字と小文字を区別します。

はい

なし

schema

テーブルを含むスキーマ。

いいえ

なし

column

同期するカラム。JSON 配列を使用してカラム名を定義します。このパラメーターを指定しないか、空のままにすると、Reader はすべてのカラムを読み取ります。

いいえ

すべてのカラム

splitKey

テーブルが読み取られると、シャーディングされます。splitKey パラメーターを指定すると、splitKey が表すフィールドがデータシャーディングに使用されます。これにより、データ同期は同時タスクを開始し、パフォーマンスを向上させることができます。2 つの異なるシャーディング方法から選択できます。splitPoint パラメーターが空の場合、テーブルはデフォルトで方法 1 に基づいて自動的にシャーディングされます:

  • 方法 1:splitKey に基づいて最大値と最小値を見つけ、指定された concurrent 数に従って均等にシャーディングします。

    説明

    シャーディングキーは整数型または文字列型である必要があります。

  • 方法 2:Reader は、手動で設定された splitPoints に基づいてデータをパーティション分割します。データは、設定された concurrent タスクの数に基づいて同期されます。

はい

なし

splitPoints

シャーディングキーの最小値と最大値に基づく自動シャーディングでは、データのホットスポットを防げない場合があります。最適なパフォーマンスを得るには、HBase Regionsstartkeyendkey に基づいてカスタムのシャーディングポイントを定義することを推奨します。これにより、各同時タスクが単一の Region をクエリすることが保証されます。

いいえ

なし

where

テーブルクエリに追加するフィルター条件。HBase20xsql Reader は、columntablewhere パラメーターに基づいて SQL クエリを構築し、データを抽出します。

いいえ

なし

querySql

where パラメーターでは不十分な複雑なフィルタリングシナリオの場合、カスタム SQL クエリを提供できます。このパラメーターを設定すると、Reader は columntablewheresplitKey パラメーターを無視します。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 のカラム名は通常、大文字です。

説明
  • カラムの順序は Reader の出力と一致する必要があります。

  • データ型を指定する必要はありません。Writer は Phoenix からカラムのメタデータを自動的に取得します。

はい

なし

hbaseConfig

HBase クラスターのエンドポイントを指定します。ZooKeeper (ZK) エンドポイントを ip1,ip2,ip3 の形式で指定する必要があります。

説明
  • 複数の IP アドレスを区切るには、カンマ (,) を使用します。

  • znode パラメーターはオプションです。デフォルト値は /hbase です。

はい

なし

batchSize

バッチ書き込みの最大行数を指定します。

いいえ

256

nullMode

ソースデータからの null 値の処理方法を指定します。

  • skip:Writer はカラムの書き込みをスキップします。このカラムの値が宛先行に既に存在する場合、Writer はそれを削除します。

  • empty:Writer は空の値を挿入します。空の値は、数値型の場合は 0、varchar 型の場合は空の文字列です。

いいえ

skip