ApsaraDB for SelectDB はフェデレーテッドクエリをサポートしており、データレイク、データベース、リモートファイルなどの外部データソースを統合して、便利で効率的なデータ分析を行うことができます。このトピックでは、カタログを使用して Hive データソースを SelectDB と統合し、Hive データソースに対してフェデレーテッド分析を実行する方法について説明します。
前提条件
Hive クラスタ内のすべてのノードが SelectDB インスタンスに接続されていること。
Hive クラスタ内のすべてのノードが、SelectDB インスタンスと同じ VPC に存在すること。データソースクラスタ内のノードが異なる VPC に存在する場合は、それらのノードを SelectDB インスタンスに接続する必要があります。詳細については、「ApsaraDB for SelectDB インスタンスとデータソース間の接続を確立できない場合はどうすればよいですか?」をご参照ください。
Hive クラスタ内のすべてのノードの IP アドレスが、SelectDB インスタンスの IP アドレスホワイトリストに追加されていること。詳細については、「IP アドレスホワイトリストを構成する」をご参照ください。
Hive クラスタでホワイトリストメカニズムがサポートされている場合、SelectDB インスタンスが存在する VPC 内の IP アドレスが、Hive クラスタの IP アドレスホワイトリストに追加されていること。
所属する VPC 内の SelectDB インスタンスの IP アドレスを取得するには、「ApsaraDB SelectDB インスタンスが属する VPC 内の IP アドレスを確認するにはどうすればよいですか。」に記載されている操作を実行できます。
SelectDB インスタンスのパブリック IP アドレスを取得するには、ping コマンドを実行して SelectDB インスタンスのパブリック IP アドレスに ping を実行します。
Hive クラスタが Hadoop 分散ファイルシステム (HDFS) 上に構築されている場合、HDFS が Hive クラスタと SelectDB 間でデータを転送するために、次のポートが有効になります。
hive.metastore.urisパラメーターで指定されたポート。デフォルト値:9083。dfs.namenode.rpc-addressパラメーターで指定されたポート。デフォルト値:8020。dfs.datanode.addressパラメーターで指定されたポート。デフォルト値:9866。
カタログに関する基本的な知識があり、カタログで実行できる操作を理解している必要があります。詳細については、「データレイクハウス」をご参照ください。
使用上の注意
Hive 1、Hive 2、および Hive 3 がサポートされています。
管理テーブル、外部テーブル、および一部の Hive ビューがサポートされています。
Hive メタストアに格納されている Hive、Iceberg、および Hudi のメタデータは識別できます。
ApsaraDB for SelectDB は、外部カタログのデータのみを読み取ることができます。
サンプル環境
この例では、Linux オペレーティングシステムを使用し、ApsaraDB for SelectDB でフェデレーテッドクエリを実行して、HDFS 上に構築された Hive クラスタ内の test_db.test_t テーブルをクエリします。オペレーティングシステムと環境に基づいて、例の パラメーター設定を変更できます。サンプル環境のパラメーター:
ビジネスシナリオ: 非高可用性 (HA)
Hive クラスタタイプ: HDFS
ソースデータベース: test_db
ソーステーブル: test_t
ソースデータを準備する
クエリを実行するデータが含まれる Hive クラスターにログオンします。
testdb という名前のデータベースを作成します。
CREATE database if NOT EXISTS test_db;Hive_t という名前のテーブルを作成します。
CREATE TABLE IF NOT EXISTS test_t ( id INT, name STRING, age INT );テーブルにデータを挿入します。
--テーブルにデータを挿入します。 INSERT INTO TABLE test_t VALUES (1, 'Alice', 25), (2, 'Bob', 30), (3, 'Charlie', 35), (4, 'David', 40), (5, 'Eve', 45);
手順
手順 1: ApsaraDB for SelectDB インスタンスに接続する
SelectDB インスタンスに接続します。詳細については、「MySQL クライアントを使用して ApsaraDB for SelectDB インスタンスに接続する」をご参照ください。
手順 2: Hive カタログを作成する
SelectDB で外部カタログを作成して、外部データソースを統合できます。カタログパラメーターは、ビジネスシナリオによって異なります。適切な構文を選択し、ビジネスシナリオに基づいて必須パラメーターを構成します。
カタログを作成すると、ApsaraDB for SelectDB によってカタログ内のデータベースとテーブルが自動的に同期されます。ApsaraDB for SelectDB は、カタログ内の列のデータ型を ApsaraDB for SelectDB のデータ型にマップします。詳細については、このトピックの「列のデータ型マッピング」セクションをご参照ください。
HDFS ベースの Hive
構文
CREATE CATALOG <catalog_name> PROPERTIES (
'type'='<type>',
'hive.metastore.uris' = '<hive.metastore.uris>',
'hadoop.username' = '<hadoop.username>',
'dfs.nameservices'='<hadoop.username>',
'dfs.ha.namenodes.your-nameservice'='<dfs.ha.namenodes.your-nameservice>',
'dfs.namenode.rpc-address.your-nameservice.nn1'='<dfs.namenode.rpc-address.your-nameservice.nn1>',
'dfs.namenode.rpc-address.your-nameservice.nn2'='<dfs.namenode.rpc-address.your-nameservice.nn2>',
'dfs.client.failover.proxy.provider.your-nameservice'='<dfs.client.failover.proxy.provider.your-nameservice>'
);パラメータ
非 HA シナリオ
パラメータ | 必須 | 説明 |
catalog_name | はい | カタログの名前。 |
type | はい | カタログのタイプ。値を hms に設定します。 |
hive.metastore.uris | はい | Hive Metastore の URI。
|
HA シナリオ
パラメータ | 必須 | 説明 |
catalog_name | はい | カタログの名前。 |
type | はい | カタログのタイプ。値を hms に設定します。 |
hive.metastore.uris | はい | Hive Metastore の URI。
|
hadoop.username | いいえ | HDFS へのログインに使用するユーザー名。 |
dfs.nameservices | いいえ | NameService の名前。値は、既存の Hive 環境が依存する hdfs-site.xml 構成ファイルの dfs.nameservices パラメータの値と同じである必要があります。 |
dfs.ha.namenodes.[nameservice ID] | いいえ | NameNode の ID。値は、既存の Hive 環境が依存する hdfs-site.xml 構成ファイルの対応するパラメータの値と同じである必要があります。 |
dfs.namenode.rpc-address.[nameservice ID].[name node ID] | いいえ | NameNode のリモートプロシージャコール ( RPC ) アドレス。RPC アドレスの数は、NameNode の数と同じである必要があります。値は、既存の Hive 環境が依存する hdfs-site.xml 構成ファイルの対応するパラメータの値と同じである必要があります。 |
dfs.client.failover.proxy.provider.[nameservice ID] | いいえ | HDFS クライアントのアクティブな NameNode 接続を実装する Java クラス。ほとんどの場合、値を |
非 HA シナリオのサンプルコマンド
CREATE CATALOG hive_catalog PROPERTIES (
'type'='hms',
'hive.metastore.uris' = 'thrift://master-1-1.c-7fa25a1a****.cn-hangzhou.emr.aliyuncs.com:9083'
);OSS ベースの Hive
構文
Object Storage Service ( OSS ) に基づく Hive カタログを作成するための構文は、HDFS に基づく Hive カタログを作成するための構文と同じです。唯一の違いは、必要なパラメータが異なることです。
パラメータ
パラメータ | 必須 | 説明 |
type | はい | カタログのタイプ。値を hms に設定します。 |
hive.metastore.uris | はい | Hive Metastore の URI。
|
oss.endpoint | はい | OSS データにアクセスするために使用する |
oss.access_key | はい | OSS データへのアクセスに使用する |
oss.secret_key | はい | OSS データへのアクセスに使用する |
サンプルコマンド
CREATE CATALOG hive_catalog PROPERTIES (
"type"="hms",
"hive.metastore.uris" = "thrift://172.0.0.1:9083",
"oss.endpoint" = "oss-cn-beijing.aliyuncs.com",
"oss.access_key" = "ak",
"oss.secret_key" = "sk"
);手順 3: カタログを表示する
次のステートメントを実行して、カタログが作成されているかどうかを確認できます。
SHOW CATALOGS; -- カタログが作成されているかどうかを確認します。+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| CatalogId | CatalogName | Type | IsCurrent | CreateTime | LastUpdateTime | Comment |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 436009309195 | hive_catalog | hms | | 2024-07-19 17:09:08.058 | 2024-07-19 18:04:37 | |
| 0 | internal | internal | yes | UNRECORDED | NULL | Doris internal catalog |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+手順 4: Hive データベースとテーブルのデータを表示する
作成した外部カタログの Hive データベースとテーブルを表示します。
説明ApsaraDB for SelectDB インスタンスに接続すると、デフォルトで内部カタログが使用されます。
管理する外部カタログに切り替えます。
SWITCH hive_catalog;データを表示します。
外部カタログに切り替えると、内部カタログを使用するのと同じ方法で外部カタログのデータにアクセスできます。例:
データベースリストを表示するには、
SHOW DATABASES;ステートメントを実行します。指定したデータベースに切り替えるには、
USE test_db;ステートメントを実行します。テーブルリストを表示するには、
SHOW TABLES;ステートメントを実行します。指定したテーブルのデータを表示するには、
SELECT * FROM test_t;ステートメントを実行します。
内部カタログの Hive データベースとテーブルを表示します。
-- hive_catalog カタログの test_db データベースの test_t テーブルのデータを表示します。 SELECT * FROM hive_catalog.test_db.test_t;
関連操作: データの移行
Hive データソースを統合した後、INSERT INTO 文を実行して、既存データを Hive データソースから SelectDB に移行できます。詳細については、「INSERT INTO 文を使用したデータのインポート」をご参照ください。
サンプル環境
次の Hive メタストア データ型は、Hive、Iceberg、および Hudi に適用できます。
複雑な構造を持つ一部の Hive メタストアと ApsaraDB for SelectDB データ型はネストできます。ネストの例:
array<type>:
array<map<string, int>>map<KeyType, ValueType>:
map<string, array<int>>struct<col1: Type1, col2: Type2, ...>:
struct<col1: array<int>, col2: map<int, date>>
Hiveメタストアデータ型 | ApsaraDB for SelectDBデータ型 |
boolean | boolean |
tinyint | tinyint |
smallint | smallint |
int | int |
bigint | bigint |
date | date |
timestamp | datetime |
float | float |
double | double |
char | char |
varchar | varchar |
decimal | decimal |
array<type> | array<type> |
map<KeyType, ValueType> | map<KeyType, ValueType> |
struct<col1: Type1, col2: Type2, ...> | struct<col1: Type1, col2: Type2, ...> |
その他 | 未サポート |