MaxCompute と ApsaraDB for HBase 間のネットワーク接続を確立した後、ApsaraDB for HBase の Standard Edition または Performance-enhanced Edition のクラスター内のテーブルに対応する外部テーブルを作成できます。 これらの外部テーブルを使用して、データを MaxCompute に同期して ETL を実行したり、フェデレーテッドクエリを実行したり、MaxCompute から ApsaraDB for HBase にデータを書き戻したりできます。 本トピックでは、ApsaraDB for HBase 外部テーブルの作成方法について説明します。
背景情報
ApsaraDB for HBase は、標準の HBase アクセスプロトコルと互換性のある分散データベースです。 Standard Edition、Performance-enhanced Edition、Serverless Edition があります。 MaxCompute は、ApsaraDB for HBase Standard Edition または ApsaraDB for HBase Performance-enhanced Edition のクラスターへのアクセスのみをサポートします。
まず、VPC 接続を確立する必要があります。 外部テーブルを使用して ApsaraDB for HBase にアクセスするには、MaxCompute と VPC 間のネットワークリンクを確立し、必要な IP アドレスを ApsaraDB for HBase のホワイトリストに追加する必要があります。 詳細については、「ホワイトリストの設定」をご参照ください。
Lindorm コンソールで ApsaraDB for HBase Performance-enhanced Edition のインスタンスを作成することもできます。 このシナリオで外部テーブルを作成するには、「Lindorm 外部テーブル」をご参照ください。 本トピックでは、ApsaraDB for HBase コンソールで作成された ApsaraDB for HBase インスタンスの外部テーブルを作成する方法について説明します。
前提条件
ApsaraDB for HBase 外部テーブルを作成する前に、次の要件が満たされていることを確認してください。
ApsaraDB for HBase Standard Edition または ApsaraDB for HBase Performance-enhanced Edition のクラスターを作成し、設定済みであること。
ApsaraDB for HBase Standard Edition クラスターの購入と設定方法の詳細については、「ApsaraDB for HBase Standard Edition クイックスタート」をご参照ください。
ApsaraDB for HBase Performance-enhanced Edition クラスターの購入と設定方法の詳細については、「ApsaraDB for HBase Performance-enhanced Edition クイックスタート」をご参照ください。
HBase クライアントを使用して ApsaraDB for HBase クラスターにテーブルを作成済みであること。
ApsaraDB for HBase でテーブルを作成する方法の詳細については、「HBase シェルの概要」をご参照ください。
デモンストレーションのために、本トピックでは、次のコマンドを使用して ApsaraDB for HBase Standard Edition または ApsaraDB for HBase Performance-enhanced Edition のクラスターに mf_hbase_test_t という名前のテーブルが作成されていることを前提としています。
-- HBase テーブルを作成します。 create 'mf_hbase_test_t', 'f' -- データを挿入します。 この例では、'1' は RowKey、'f' はカラムファミリー、'col1' はカラム修飾子、'hello' はカラム値です。 put 'mf_hbase_test_t', '1', 'f:col1', 'hello'ApsaraDB for HBase テーブルに関連付ける、ターゲットの MaxCompute プロジェクトを作成済みであること。
MaxCompute プロジェクトの作成方法の詳細については、「MaxCompute プロジェクトの作成」をご参照ください。
MaxCompute クライアントをインストール済みであること。
MaxCompute クライアントのインストール方法の詳細については、「MaxCompute クライアントのインストールと設定」をご参照ください。
VPC 接続ソリューションを使用して、MaxCompute と ApsaraDB for HBase 間のネットワーク接続を確立済みであること。
VPC 接続ソリューションの詳細については、「ネットワーク接続プロセス」をご参照ください。
制限事項
ApsaraDB for HBase 外部テーブルを作成して MaxCompute と ApsaraDB for HBase を接続できるのは、次のリージョンのみです:中国 (北京)、中国 (上海)、中国 (張家口)、中国 (ウランチャブ)、中国 (杭州)、中国 (深圳)、中国 (香港)、China East 2 Finance Cloud (Zone F)、日本 (東京)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、米国 (シリコンバレー)、および米国 (バージニア)。 ネットワーク接続の確立方法については、「ネットワーク接続プロセス」をご参照ください。
ネットワーク接続が確立された後、MaxCompute は指定された VPC にのみアクセスできます。 同じリージョンまたは異なるリージョン内の別の VPC にアクセスするには、接続された VPC から他の VPC へのネットワーク接続を確立する必要があります。
外部テーブルは、ApsaraDB for HBase 2.x クラスターへのアクセスにのみ使用できます。
ApsaraDB for HBase 外部テーブルは、EMR HBase クラスターをサポートしていません。
ApsaraDB for HBase 外部テーブルでは、
clusterプロパティはサポートされていません。
注意事項
ソースの ApsaraDB for HBase テーブルからデータを読み取る際、ソーステーブルのカラム数が外部テーブルのスキーマよりも少ない場合、不足しているカラムには NULL が設定されます。 ソーステーブルのカラム数が多い場合、余分なカラムは無視されます。
HBase 外部テーブルの構文
外部テーブルを作成する際、DDL ステートメントで HBaseStorageHandler を指定し、ApsaraDB for HBase Standard Edition または ApsaraDB for HBase Performance-enhanced Edition クラスターに関する情報を設定する必要があります。 テーブル名とカラム名のクエリでは、大文字と小文字は区別されません。
-- Hive 互換モードを有効にします。
set odps.sql.hive.compatible = true;
-- ApsaraDB for HBase Performance-enhanced Edition クラスターを使用する場合、次のコマンドを実行します。
SET odps.sql.external.net.vpc=true;
set odps.sql.hbase.version=lindorm;
-- ApsaraDB for HBase 外部テーブルを作成します。
create external table if not exists <mc_hbase_external>
(
<col1_name> <data_type>,
<col2_name> <data_type>,
......
)
-- ApsaraDB for HBase データソースからのデータを処理するために使用されるハンドラー。
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties (
'hbase.columns.mapping'='<:key,col-family:col-name1,col-family:col-name2,...>')
tblproperties (
-- hbase.table.name および hbase.zookeeper.quorum パラメーターは必須です。
'hbase.table.name'='<hbase_table_name>',
'hbase.zookeeper.quorum'='<VPC IP1|host1:port,VPC IP2|host2:port...>',
-- hbase.client.username および hbase.client.password パラメーターは、ApsaraDB for HBase Performance-enhanced Edition クラスターでのみ必須です。
'hbase.client.username'='****',
'hbase.client.password'='****',
-- hbase.zookeeper.property.clientPort、mcfed.zookeeper.session.timeout、および hbase.client.retries.number パラメーターはオプションです。
-- ApsaraDB for HBase Standard Edition クラスターの場合、hbase.zookeeper.property.clientPort のデフォルト値は 2181 です。
-- ApsaraDB for HBase Performance-enhanced Edition クラスターの場合、デフォルト値は 30020 です。
['hbase.zookeeper.property.clientPort'='{2181|30020}',]
['mcfed.zookeeper.session.timeout'='<value>',]
['hbase.client.retries.number'='<value>',]
'networklink'='<networklink_name>'
);mc_hbase_external:必須。 作成する ApsaraDB for HBase 外部テーブルの名前。
col_name:必須。 ApsaraDB for HBase 外部テーブル内のカラムの名前。
data_type:必須。 カラムのデータ型。
with serdeproperties:
'hbase.columns.mapping'='<:key,col-family:col-name1,col-family:col-name2,...>':必須。 ApsaraDB for HBase 外部テーブルのカラムと ApsaraDB for HBase クラスター内のテーブルのカラムとの間のマッピング。
:keyとして指定される RowKey は、最初のエントリである必要があります。カラムの形式は
col-family:col-name1,col-family:col-name2です。 1 つのジョブで指定できるカラムファミリーは 1 つだけです。
hbase://VPC ip|host:port: Required. The ZooKeeper master configured on ApsaraDB for HBase. This is the ZooKeeper connection endpoint for ApsaraDB for HBase Standard Edition or the Java API access endpoint for ApsaraDB for HBase Performance-enhanced Edition. You can also specify the VPC IP address, IP address range, or port of the associated ApsaraDB for HBase table. Examples:
192.0.2.1-192.0.2.10:9000, 192.0.2.20:70050or192.0.2.20/16:2181. To obtain this information, log on to the ApsaraDB for HBase console . On the Clusters page, click the name of the target cluster. In the left-side navigation pane, click Database Connection to view the Connection Information.For distributed data sources, confirm the front-end IP address and port and the DataNode IP addresses and ports that you want to access. For an ApsaraDB for HBase external table, you must specify the IP addresses and ports of ZooKeeper, HMaster, and RegionServer (2181 or 30020, 16000, and 16020). The default ZooKeeper port is 2181 for ApsaraDB for HBase Standard Edition and 30020 for ApsaraDB for HBase Performance-enhanced Edition.
This field supports IP address ranges. IP address mapping consumes resources. By default, you can map a maximum of 2,000 IP addresses at a time.
tblproperties:
'hbase.table.name'='<hbase_table_name>':必須。 MaxCompute がマッピングする ApsaraDB for HBase クラスター内のテーブルの名前。 このテーブルは、HBase クライアントを使用して事前に作成されている必要があります。
'hbase.zookeeper.quorum'='<VPC IP1|host1:port,VPC IP2|host2:port...>':必須。 ApsaraDB for HBase の ZooKeeper の IP アドレスまたはドメイン名。 これは、ApsaraDB for HBase Standard Edition の ZooKeeper 接続エンドポイント、または ApsaraDB for HBase Performance-enhanced Edition の Java API アクセスエンドポイントです。
hbase.client.username:必須。 このパラメーターは、ApsaraDB for HBase Performance-enhanced Edition クラスターでのみ必須です。 ユーザー名を確認するには、ApsaraDB for HBase コンソールにログインします。 [Clusters] ページで、ターゲットクラスターの名前をクリックします。 左側メニューで、[Database Connection] をクリックします。 次に、[Connection Information] セクションで [Default Username] を見つけます。
hbase.client.password:必須。 このパラメーターは、ApsaraDB for HBase Performance-enhanced Edition クラスターでのみ必須です。 パスワードを確認するには、ApsaraDB for HBase コンソールにログインします。 [Clusters] ページで、ターゲットクラスターの名前をクリックします。 左側メニューで、[Database Connection] をクリックします。 次に、[Connection Information] セクションで [Default Password] を見つけます。
'hbase.zookeeper.property.clientPort'='{2181|30020}':オプション。 ApsaraDB for HBase の ZooKeeper ポート。 デフォルトの ZooKeeper ポートは、ApsaraDB for HBase Standard Edition の場合は 2181、ApsaraDB for HBase Performance-enhanced Edition の場合は 30020 です。
'mcfed.zookeeper.session.timeout'='<value>':オプション。 ZooKeeper のセッションタイムアウト。 単位:ミリ秒。 30000 の値を推奨します。
'hbase.client.retries.number'='<value>':オプション。 HBase クライアントの接続リトライ回数。
'networklink'='<networklink_name>':必須。 ApsaraDB for HBase インスタンスが存在する VPC への、MaxCompute ネットワーク接続の名前。
説明mcfed.zookeeper および hbase で始まる設定は、ZooKeeper 関連の設定です。
例
MaxCompute コンソールにログインし、
CREATE EXTERNAL TABLEステートメントを実行して ApsaraDB for HBase 外部テーブルを作成します。例:
ApsaraDB for HBase Standard Edition:
SET odps.sql.hive.compatible = true; CREATE EXTERNAL TABLE IF NOT EXISTS mf_hbase_test_t_ext ( key int, col1 string, col2 string ) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ( 'hbase.columns.mapping'=':key,f:col1,f:col2') tblproperties ( 'hbase.table.name'='mf_hbase_test_t', 'hbase.zookeeper.quorum'='hb-2zef****-master1-001.hbase.rds.aliyuncs.com,hb-2zef****-master2-001.hbase.rds.aliyuncs.com,hb-2zef****-master3-001.hbase.rds.aliyuncs.com', 'hbase.zookeeper.property.clientPort'='2181', 'networklink'='networklink4hbase');ApsaraDB for HBase Performance-enhanced Edition:
SET odps.sql.external.net.vpc=true; SET odps.sql.hive.compatible = true; SET odps.sql.hbase.version=lindorm; CREATE EXTERNAL TABLE mf_hbase_test_t_ext ( key int, col1 string, col2 string ) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH serdeproperties ( 'hbase.columns.mapping'=':key,f:col1,f:col2') tblproperties ( 'hbase.table.name'='mf_hbase_test_t', 'hbase.zookeeper.quorum'='hb-2zef****-master1-001.hbase.rds.aliyuncs.com,hb-2zef****-master2-001.hbase.rds.aliyuncs.com,hb-2zef****-master3-001.hbase.rds.aliyuncs.com', 'hbase.client.username'='****', 'hbase.client.password'='****', 'hbase.zookeeper.property.clientPort'='30020', 'networklink'='networklink4hbase');
SELECTコマンドを実行してテーブルをクエリし、関連付けが成功したことを確認します。例:
SELECT * FROM mf_hbase_test_t_ext;次の結果が返されます。
+------+------------+------------+ | key | col1 | col2 | +------+------------+------------+ | 1 | hello | NULL | +------+------------+------------+INSERT OVERWRITEステートメントを実行して、ApsaraDB for HBase のテーブルにデータを書き込みます。例:
INSERT OVERWRITE TABLE mf_hbase_test_t_ext SELECT '2', 'hbase', 'mftestinsert';SELECTステートメントを実行して、書き込まれたデータを確認します。例:
SELECT * FROM mf_hbase_test_t_ext;次の結果が返されます。
+------+------------+--------------------+ | key | col1 | col2 | +------+------------+--------------------+ | 1 | hello | NULL | | 2 | hbase | mftestinsert | +------+------------+--------------------+