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

DataWorks:HBase データソース

最終更新日:Mar 14, 2026

HBase データソースは、HBase からの読み取りおよび HBase への書き込みの両方をサポートします。本トピックでは、DataWorks における HBase データソースのデータ同期機能について説明します。

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

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

  1. HBase プラグイン:

    HBase プラグインは、HBase 0.94.xHBase 1.1.x、および HBase 2.x をサポートし、コードレス UI およびコードエディタの両方で動作します。hbaseVersion パラメーターを使用してバージョンを指定できます。

    • HBase 0.94.x を使用する場合、リーダーとライターの hbaseVersion パラメーターを 094x に設定します。

      "reader": {
              "hbaseVersion": "094x"
          }
      "writer": {
              "hbaseVersion": "094x"
          }
    • HBase 1.1.x または HBase 2.x を使用する場合、リーダーおよびライターの hbaseVersion パラメーターを 11x に設定します。

      "reader": {
              "hbaseVersion": "11x"
          }
      "writer": {
              "hbaseVersion": "11x"
          }
      HBase 1.1.x プラグインは HBase 2.0 と互換があります。
  2. HBase{xx}xsql プラグイン

    1. HBase20xsql プラグインは、HBase 2.x および Phoenix 5.x をサポートします。コードエディタのみがサポートされます。

      HBase11xsql プラグインは、HBase 1.1.x および Phoenix 5.x をサポートします。コードエディタのみがサポートされます。

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

      説明

      このプラグインは、Phoenix Java Database Connectivity(JDBC)ドライバーを使用して UPSERT 文を実行し、テーブルにデータをバッチ単位で書き込みます。プラグインは高レベル API を使用するため、関連するインデックステーブルも同期的に更新されます。

制限事項

HBase リーダー

HBase20xsql リーダー

HBase11xsql ライター

  • テーブルは、単一のプライマリキー列でのみシャーディングできます。

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

  • テーブル名、スキーマ名、カラム名は大文字と小文字を区別し、Phoenix テーブルで使用されているケースに一致させる必要があります。

  • HBase20xsql リーダーは、Phoenix QueryServer を介してのみデータを読み取ります。このプラグインを使用する前に、Phoenix で QueryServer サービスを起動する必要があります。

  • このプラグインは、データ統合のサーバーレスリソースグループ(推奨) のみをサポートします。

  • このプラグインは、タイムスタンプ付きのデータのインポートをサポートしません。

  • このプラグインは、Phoenix で作成されたテーブルへのみデータを書き込み、ネイティブの HBase テーブルはサポートしません。

  • リーダーのカラム順序が出力行の構造を定義し、ライターのカラム順序が期待される入力シーケンスを定義します。たとえば:

    • リーダーのカラム順序が c1、c2、c3、c4 の場合。

    • ライターのカラム順序が x1、x2、x3、x4 の場合。

    この場合、リーダーのカラム c1 の値がライターのカラム x1 に書き込まれます。ライターのカラム順序が x1、x2、x4、x3 の場合、c3 の値が x4 に、c4 の値が x3 に書き込まれます。

  • このプラグインは、インデックステーブルへのデータインポートをサポートし、関連するすべてのインデックステーブルを同期的に更新します。

機能

HBase リーダー

normal モードおよび multiVersionFixedColumn モードがサポートされています。設定方法については、「HBase フィールドマッピング設定ガイド」をご参照ください。

  • normal モード: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 

    以下の表は、読み取られたデータの例を示しています。

    Rowkey

    basic:age

    basic:name

    score:english

    score:math

    s001

    20

    Tom

    90

    85

  • multiVersionFixedColumn モードでは、HBase テーブルを狭いテーブル(ナローテーブル)として読み取ります。各返却レコードは、rowKeyfamily:qualifiertimestamp、および 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 }

    以下の表は、結果として得られる 4 カラム形式のデータの例を示しています。

    Rowkey

    column:qualifier

    Timestamp

    Value

    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 ライター

  • rowkey の生成ルール:現在、HBase ライターは、ソースから複数のフィールドを連結して HBase テーブルの rowkey を生成することをサポートしています。

  • HBase へのデータ書き込み時に使用可能なタイムスタンプ(version)のオプションは以下のとおりです:

    • 現在時刻をバージョンとして使用します。

    • ソースカラムの値をバージョンとして使用します。

    • 固定時刻をバージョンとして指定します。

サポートされるデータ型

バッチ読み取り

  • 以下の表は、HBase リーダーのデータ型マッピングを示しています。

    カテゴリ

    データ統合カラム型

    データベース型

    整数

    long

    short、int、および long

    浮動小数点

    double

    float および double

    文字列

    string

    binary_string および string

    日付および時刻

    date

    date

    バイト

    bytes

    bytes

    ブール値

    boolean

    boolean

  • HBase20xsql リーダーは、ほとんどの Phoenix データ型をサポートしていますが、すべてのデータ型をサポートしているわけではありません。ご使用のデータ型がサポートされているか確認してください。

  • 以下の表は、HBase20xsql リーダーのデータ型マッピングを示しています。

    DataX 内部型

    Phoenix データ型

    long

    INTEGER、TINYINT、SMALLINT、BIGINT

    double

    FLOAT、DECIMAL、DOUBLE

    string

    CHAR、VARCHAR

    date

    DATE、TIME、TIMESTAMP

    bytes

    BINARY、VARBINARY

    boolean

    BOOLEAN

バッチ書き込み

以下の表は、HBase ライターのデータ型マッピングを示しています。

説明
  • カラム構成は、HBase テーブルのカラム型と一致している必要があります。

  • 以下の表に記載されているデータ型のみがサポートされます。

カテゴリ

データベース型

整数

INT、LONG、および SHORT

浮動小数点

FLOAT および DOUBLE

ブール値

BOOLEAN

文字列

STRING

注意事項

接続性テスト時に "tried to access method com.google.common.base.Stopwatch" エラーメッセージが表示された場合は、データソース構成に hbaseVersion パラメーターを追加してください。

データソースの追加

DataWorks で同期タスクを開発する前に、データソース管理 の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際には、DataWorks コンソールで パラメーターの説明を表示することで、各パラメーターの意味を確認できます。

データ同期タスク

同期タスクの設定手順およびエントリポイントについては、以下の設定ガイドをご参照ください。

単一テーブルのバッチ同期

  • 設定方法については、「コードレス UI の使用」および「コードエディタの使用」をご参照ください。

    コードレス UI を使用する場合、HBase は柔軟なスキーマを持つため、フィールドマッピングはデフォルトで表示されません。マッピングは手動で設定する必要があります。

    HBase をソースとして使用する場合、まず 出力モード を選択する必要があります:ワイドテーブル(normal モード)またはナローテーブル(multiVersionFixedColumn モード)。

    2 つのモード間でフィールドマッピングの設定方法は異なります:

    • ワイドテーブル(normal モード):これはデフォルトモードです。HBase テーブルを標準的な二次元テーブルとして読み取り、最新バージョンのデータを取得します。HBase をソースとして使用する場合、ソースフィールドターゲットフィールド の間のマッピングを設定する必要があります。図に示すように、ソースとターゲットのフィールド間には 1 対 1 のマッピングが存在します。ソーステーブルには固定フィールドがないため、デフォルトでは行単位でフィールドがマッピングされます。このマッピングを変更するには、フィールド順序を手動で編集する必要があります。

      新しいデータ開発

      image

      従来のデータ開発

      image

      ターゲットテーブルの結果:

      image

    • ナローテーブル(multiVersionFixedColumn モード):各出力レコードは 4 つのカラム(rowKey、family:qualifier、timestamp、value)で構成され、複数のデータバージョンを読み取ることができます。ソースフィールドの ソースフィールドColumnFamily:Qualifier 形式(例:basic:age)で設定します。ターゲットは、4 カラム(row_key、cf、timestamp_col、value)で構成される固定テーブルです。このモードではフィールドマッピングは不要です。

      新しいデータ開発

      image

      従来のデータ開発

      image

      ターゲットテーブルの結果:

      image

    • HBase をデータ送信先として使用する場合(normal モードのみ対応)、ターゲットフィールド および rowkey を別々に設定する必要があります。rowkey フィールドは、複数のソースフィールドを連結したものにすることができます。

  • コードエディタのパラメーター一覧およびサンプルスクリプトについては、「付録:スクリプトのデモおよびパラメーター説明」をご参照ください。

よくある質問

  • Q:推奨される同時実行数(Concurrency)の設定値は? 同時実行数を増やすことで、インポート速度の遅さを解消できますか?

    A:Java 仮想マシン(JVM)におけるデータインポートプロセスのデフォルトヒープサイズは 2 GB です。同時実行はマルチスレッドによって実装されます。過剰なスレッド数を使用すると、GC(ガーベジコレクション)が頻繁に発生し、パフォーマンスが低下する可能性があるため、インポート速度が向上しないことがあります。同時実行数は 5~10 を推奨します。

  • Q:batchSize — 適切な値はどれですか?

    A:デフォルト値は 256 ですが、最適な batchSize は各行のサイズに基づいて算出する必要があります。1 回の操作で通常処理されるデータ量は 2 MB~4 MB です。batchSize は、このデータ量を行サイズで割ることで算出できます。

  • Q:multiVersionFixedColumn モードを使用して HBase からデータを読み取ると、java.lang.StringIndexOutOfBoundsException: String index out of range: -1 エラーが発生します。この問題を解決するにはどうすればよいですか?

    A: このエラーは通常、列の構成における name フィールドが Column Family:Column Qualifier (columnFamily:qualifier) 形式を使用していないために発生します。たとえば、age の代わりに basic:age を指定しなかった場合などです。name には、rowkey を除くすべての列で、columnFamily:qualifier 形式によるカラムファミリーのプレフィックスを含める必要があります。

付録:スクリプトの例およびパラメーター

コードエディタを使用したバッチ同期タスクの設定

コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプトフォーマット要件に基づき、関連するパラメーターをスクリプト内に設定する必要があります。詳細については、「コードエディタの使用」をご参照ください。以下に、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要のあるパラメーターについて説明します。

HBase リーダースクリプトの例

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"hbase",// プラグイン名。
            "parameter":{
                "mode":"normal",// HBase からデータを読み取るモード。有効な値:normal および multiVersionFixedColumn。
                "scanCacheSize":"256",// HBase クライアントがリモートプロシージャコール(RPC)ごとにサーバーから読み取る行数。
                "scanBatchSize":"100",// HBase クライアントが 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":{// HBase リーダーの rowkey 範囲。
                    "endRowkey":"",// 終了 rowkey。
                    "isBinaryRowkey":true,// 構成済みの startRowkey および endRowkey を byte 配列に変換する方法を指定します。デフォルト値:false。
                    "startRowkey":""// 開始 rowkey。
                },
                "maxVersion":"",// multiVersionFixedColumn モードで読み取るバージョン数。
                "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 を使用していますが、他のライタープラグインに置き換え可能です。
            "parameter":{
                "partition":"",// 送信先テーブルのパーティション情報。非パーティション化テーブルの場合は、このパラメーターを設定する必要はありません。
                "truncate":true,// 書き込み操作の前に、送信先テーブルまたはパーティション内の既存データをクリアするかどうかを指定します。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,// 速度制限を有効にするかどうかを指定します。true を設定すると、`mbps` で指定されたレートでデータが転送されます。false を設定すると、`mbps` パラメーターは無視され、レート制限は適用されません。
            "concurrent":1,// 最大並行スレッド数。
            "mbps":"12"// 最大転送レート。単位:MB/s。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

HBase リーダースクリプトの例(multiVersionFixedColumn モード)

以下の例は、multiVersionFixedColumn モードを使用して HBase からデータを読み取り、MaxCompute に書き込む完全なスクリプト構成を示しています。このモードでは、HBase の各セルの値が個別のレコードに変換されます。各レコードは、rowkeyfamily:qualifiertimestamp、および 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 でなければなりません。その他のすべてのカラムの名前は "ColumnFamily:Qualifier" 形式である必要があります。
                    {
                        "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":[// 4 つの送信先カラムは、rowkey、family:qualifier、timestamp、value に対応します。
                    "rowkey",
                    "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 リーダーパラメーター

パラメーター

説明

必須

デフォルト

haveKerberos

haveKerberos を true に設定すると、HBase クラスターで Kerberos 認証が要求されます。

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

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

  • 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 モードで必須です。

  • normal モード:

    name は読み取る HBase カラムを指定します。rowkey を除き、Column Family:Column Qualifier 形式である必要があります。type はソースデータの型を指定し、format は日付型のフォーマットを指定します。value は定数を指定します。このパラメーターを指定すると、HBase からデータを読み取らず、代わりに指定された値に基づいて対応するカラムが自動生成されます。構成フォーマットは以下のとおりです:

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

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

  • multiVersionFixedColumn モード

    name パラメーターは読み取る HBase 列を指定します。これは、rowkey を除き、Column Family:Column Qualifier のフォーマットである必要があります。type パラメーターはソースデータの型を指定し、format は日付型のフォーマットを指定します。定数列は multiVersionFixedColumn モードではサポートされていません。構成フォーマットは次のとおりです。

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

はい

なし

maxVersion

multiVersionFixedColumn モードで読み取るバージョン数を指定します。値は -1 または 1 より大きい整数である必要があります。-1 を指定すると、すべてのバージョンが読み取られます。

multiVersionFixedColumn モードで必須です。

なし

range

HBase リーダーがデータを読み取る rowkey の範囲。

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

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

  • isBinaryRowkey: startRowkey および endRowkeybyte[] 配列に変換される方法を指定します。デフォルト値は false です。true の場合、Bytes.toBytesBinary(rowkey) メソッドが呼び出されて変換が実行されます。false の場合、Bytes.toBytes(rowkey) メソッドが呼び出されます。構成フォーマットは次のとおりです。

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

いいえ

なし

scanCacheSize

HBase クライアントがリモートプロシージャコール(RPC)ごとにサーバーからフェッチする行数。

いいえ

256

scanBatchSize

HBase クライアントが RPC ごとにサーバーからフェッチするカラム数。このパラメーターを -1 に設定すると、すべてのカラムが返却されます。

説明

scanBatchSize の値は、実際のカラム数より大きく設定することを推奨します。これにより、データ品質リスクを防止できます。

いいえ

100

HBase ライタースクリプトの例

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"hbase",// プラグイン名。
            "parameter":{
                "mode":"normal",// HBase へのデータ書き込みモード。
                "walFlag":"false",// false に設定すると、Write-Ahead Log(WAL)機能が無効になります。
                "hbaseVersion":"094x",// HBase のバージョン。
                "rowkeyColumn":[// HBase 行キーの構成に使用するソースカラムを定義します。
                    {
                        "index":"0",// ソースカラムのインデックス。
                        "type":"string"// データ型。
                    },
                    {
                        "index":"-1",// 定数値の場合は -1 を使用します。
                        "type":"string",
                        "value":"_"
                    }
                ],
                "nullMode":"skip",// null 値の処理方法を指定します。
                "column":[// HBase に書き込むカラム。
                    {
                        "name":"columnFamilyName1:columnName1",// カラム名。
                        "index":"0",// ソースカラムのインデックス。
                        "type":"string"// データ型。
                    },
                    {
                        "name":"columnFamilyName2:columnName2",
                        "index":"1",
                        "type":"string"
                    },
                    {
                        "name":"columnFamilyName3:columnName3",
                        "index":"2",
                        "type":"string"
                    }
                ],
                "encoding":"UTF-8",// エンコード形式。
                "table":"YOUR_TABLE_NAME",// テーブル名。
                "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 を設定すると、`mbps` で指定されたレートでデータが転送されます。false を設定すると、`mbps` パラメーターは無視され、レート制限は適用されません。
            "concurrent":1, // 最大並行スレッド数。
            "mbps":"12"// 最大転送レート。単位:MB/s。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

HBase ライターパラメーター

パラメーター

説明

必須

デフォルト

haveKerberos

haveKerberos の値が true の場合、HBase クラスターで Kerberos 認証が要求されます。

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

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

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

いいえ

false

hbaseConfig

HBase クラスターへの接続に必要な構成情報。この情報は JSON 形式である必要があります。必須パラメーターは hbase.zookeeper.quorum であり、HBase の ZK 接続アドレスを指定します。また、スキャンキャッシュやバッチ設定などのその他の HBase クライアント構成を追加して、サーバーとのインタラクションを最適化することもできます。

説明

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

はい

なし

mode

HBase の書き込みモードは、現時点では normal モードのみに限定されています。動的カラムモードのサポートは今後の予定です。

はい

なし

table

送信先 HBase テーブルの名前。この名前は大文字と小文字を区別します。

はい

なし

encoding

STRING を HBase byte[] に変換するためのエンコーディング方式(UTF-8 や GBK)。

いいえ

utf-8

column

HBase に書き込むカラム:

  • index:対応するカラムのリーダー内でのインデックスを指定します。インデックスは 0 から始まります。

  • name:HBase テーブル内のカラムを指定します。形式は Column Family:Column Qualifier である必要があります。

  • type:書き込むデータのデータ型を指定します。これは HBase バイト配列の変換に使用されます。

はい

なし

rowkeyColumn

HBase 行キーの構成に使用するソースカラムを定義します。

  • index:対応するカラムのリーダー内での 0 基準のインデックスを指定します。定数の場合は、インデックスを -1 とします。

  • type:書き込むデータのデータ型を指定します。これは HBase バイト配列の変換に使用されます。

  • value:定数値。複数のフィールドを区切る区切り文字としてよく使用されます。HBase ライターは、rowkeyColumn で構成された順序で、すべてのカラムを連結して、HBase に書き込まれるデータの行キーを生成します。行キーは、定数のみで構成することはできません。

以下のコードはフォーマットを示しています。

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

はい

なし

versionColumn

HBase へのデータ書き込み時のタイムスタンプ。現在時刻、指定されたタイムスタンプカラム、または指定された時刻を使用できます。このパラメーターを構成しない場合、現在時刻が使用されます。

  • index:対応するカラムのリーダー内での 0 基準のインデックスを指定します。値は LONG データ型に変換可能である必要があります。

  • type:値が日付型の場合、システムは yyyy-MM-dd HH:mm:ss および yyyy-MM-dd HH:mm:ss SSS を使用して解析を試みます。特定の時刻を指定する場合、インデックスは -1 です。

  • value:指定された時刻の値(LONG 型)。

以下のコードはフォーマットを示しています。

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

いいえ

なし

nullMode

HBase への書き込み時に、ソースからの null 値をどのように処理するかを指定します:

  • skip:カラムを HBase に書き込みません。

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

いいえ

skip

walFlag

Write-Ahead Log(WAL)は、データの耐久性を保証します。MemStore への書き込みの前に、HBase クライアントは Put や Delete などの操作を WAL に書き込みます。WAL エントリが完了した後にのみ、クライアントに書き込み成功が通知されます。

WAL の書き込みが失敗した場合、操作は失敗します。書き込みパフォーマンスを向上させるために耐久性保証を低下させたい場合、このパラメーターを false に設定して WAL を無効化できます。

いいえ

false

writeBufferSize

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

autoflush 設定はデフォルトで無効になっています。

  • true:HBase クライアントは、書き込み時に各 put 操作に対して更新を実行します。

  • false:HBase クライアントは、クライアント側の書き込みバッファが満杯になったときにのみ、HBase サーバーに書き込みリクエストを送信します。

いいえ

8M

fileSystemUsername

同期タスク中に Ranger 権限の問題が発生した場合、ウィザードモードからスクリプトモードにタスクを変換し、必要な権限を持つユーザーで fileSystemUsername パラメーターを構成できます。DataWorks は、指定されたユーザーとして HBase にアクセスします。

いいえ

なし

HBase20xsql リーダースクリプトの例

{
    "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` で指定されたレートでデータが転送されます。false を設定すると、`mbps` パラメーターは無視され、レート制限は適用されません。
            "concurrent":1,// 最大並行スレッド数。
            "mbps":"12"// 最大転送レート。単位:MB/s。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

HBase20xsql リーダーパラメーター

パラメーター

説明

必須

デフォルト

queryServerAddress

HBase20xsql リーダープラグインは、Phoenix シンクライアントを使用して Phoenix QueryServer に接続します。そのため、QueryServer のアドレスを入力する必要があります。HBase エンハンスドエディション(Lindorm)を使用していて、user および password パラメーターを渡す必要がある場合、これらのオプションプロパティを queryServerAddress の値に追加できます。フォーマットは次のとおりです:http://127.0.0.1:8765;user=root;password=root

はい

なし

serialization

QueryServer で使用されるシリアル化プロトコル。

いいえ

PROTOBUF

table

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

はい

なし

schema

テーブルが存在するスキーマ。

いいえ

なし

column

構成済みテーブルから同期するカラム名のセット。カラム情報を指定するには JSON 配列を使用します。空の値は、すべてのカラムを読み取ることを意味します。

いいえ

すべてのカラム

splitKey

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

  • Method 1:シャーディング列の最大値および最小値を splitKey に基づいて検索し、指定された concurrent 値に基づいてデータを均等にシャーディングします。

    説明

    シャードキーとしてサポートされるのは、整数型および文字列型のカラムのみです。

  • Method 2:構成済みの splitPoint に基づいてデータをシャーディングできます。その後、指定された concurrent に基づいてデータを同期します。

はい

なし

splitPoints

シャーディング列の最大値および最小値に基づくシャーディングでは、データホットスポットを防止できないため、startkey および endkey を基にした Region のシャードポイントを設定することを推奨します。これにより、各クエリが単一の Region にマップされるようになります。

いいえ

なし

where

テーブルクエリのフィルター条件。HBase20xsql リーダーは、指定された columntable、および where 条件に基づいて SQL クエリを構築し、データを抽出します。

いいえ

なし

querySql

一部のビジネスシナリオでは、where パラメーターではフィルター条件を十分に記述できません。このような場合、このパラメーターを使用してカスタム SQL クエリを定義できます。このパラメーターを構成すると、HBase20xsql リーダーは指定されたクエリを使用してデータをフィルターし、columntablewhere、および splitKey パラメーターを無視します。queryserverAddress パラメーターは例外であり、必ず設定する必要があります。

いいえ

なし

HBase11xsql ライタースクリプトの例

{
  "type": "job",
  "version": "1.0",
  "configuration": {
    "setting": {
      "errorLimit": {
        "record": "0" // 許容される最大エラーレコード数。
      },
      "speed": {
            "throttle":true, // 速度制限を有効にするかどうかを指定します。
            "concurrent":1, // 最大並行スレッド数。
            "mbps":"1" // 最大転送レート。単位:MB/s。
      }
    },
    "reader": {
      "plugin": "odps",
      "parameter": {
        "datasource": "your_odps_datasource_name",
        "table": "your_source_table_name",
        "column": [],
        "partition": ""
      }
    },
    "writer": {
        "plugin": "hbase11xsql",
        "parameter": {
          "table": "PHOENIX_TABLE_NAME", // 送信先 Phoenix テーブルの名前。
          "hbaseConfig": {
            "hbase.zookeeper.quorum": "zookeeper-ip1,zookeeper-ip2", // 送信先 HBase クラスターの ZooKeeper エンドポイント。
            "zookeeper.znode.parent": "/hbase" // 送信先 HBase クラスターの znode。
          },
          "column": [
            "ID",
            "NAME" // 送信先カラム名のリスト。
          ],
          "batchSize": 256, // バッチ書き込みの最大行数。
          "nullMode": "skip" // null 値の処理方法を指定します。
        }
    }
  }
}

HBase11xsql ライターパラメーター

パラメーター

説明

必須

デフォルト

plugin

プラグイン名。値は hbase11xsql でなければなりません。

はい

なし

table

データをインポートするテーブルの名前。この名前は大文字と小文字を区別します。Phoenix のテーブル名は通常大文字です。

はい

なし

column

カラム名。これらの名前は大文字と小文字を区別します。Phoenix のカラム名は通常大文字です。

説明
  • カラム順序は、リーダーからのカラム順序と一致している必要があります。

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

はい

なし

hbaseConfig

送信先 HBase クラスターの構成。hbase.zookeeper.quorum パラメーターは必須です。

説明
  • ZooKeeper クォーラムの複数の IP アドレスは、カンマ(,)で区切ります。

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

はい

なし

batchSize

バッチ書き込みの最大行数。

いいえ

256

nullMode

ソースからの null カラム値をどのように処理するかを指定します:

  • skip:カラムを挿入しません。カラムが既に存在する場合、削除されます。

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

いいえ

skip