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

ApsaraDB for SelectDB:Hive データソース

最終更新日:Feb 11, 2025

ApsaraDB for SelectDB はフェデレーテッドクエリをサポートしており、データレイク、データベース、リモートファイルなどの外部データソースを統合して、便利で効率的なデータ分析を行うことができます。このトピックでは、カタログを使用して Hive データソースを SelectDB と統合し、Hive データソースに対してフェデレーテッド分析を実行する方法について説明します。

前提条件

  • Hive クラスタ内のすべてのノードが SelectDB インスタンスに接続されていること。

  • 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

ソースデータを準備する

  1. クエリを実行するデータが含まれる Hive クラスターにログオンします。

  2. testdb という名前のデータベースを作成します。

    CREATE database if NOT EXISTS test_db;
  3. Hive_t という名前のテーブルを作成します。

    CREATE TABLE IF NOT EXISTS test_t (
        id INT,
        name STRING,
        age INT
    );
  4. テーブルにデータを挿入します。

    --テーブルにデータを挿入します。
    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。

  • URI は thrift://<Hive Metastore の IP アドレス>:<ポート番号> 形式です。

  • デフォルトのポート番号は 9083 です。

  • Hive クライアントで SET hive.metastore.uris コマンドを実行して、URI を取得できます。

HA シナリオ

パラメータ

必須

説明

catalog_name

はい

カタログの名前。

type

はい

カタログのタイプ。値を hms に設定します。

hive.metastore.uris

はい

Hive Metastore の URI。

  • URI は thrift://<Hive Metastore の IP アドレス>:<ポート番号> 形式です。

  • デフォルトのポート番号は 9083 です。

  • Hive クライアントで SET hive.metastore.uris コマンドを実行して、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 クラス。ほとんどの場合、値を org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider に設定します。

非 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。

  • URI は thrift://<Hive Metastore の IP アドレス>:<ポート番号> 形式です。

  • デフォルトのポート番号は 9083 です。

  • Hive クライアントで SET hive.metastore.uris コマンドを実行して、URI を取得できます。

oss.endpoint

はい

OSS データにアクセスするために使用する エンドポイント。エンドポイントの取得方法については、「リージョンとエンドポイント」をご参照ください。

oss.access_key

はい

OSS データへのアクセスに使用する AccessKey ID です。

oss.secret_key

はい

OSS データへのアクセスに使用する AccessKey Secret です。

サンプルコマンド

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 インスタンスに接続すると、デフォルトで内部カタログが使用されます。

    1. 管理する外部カタログに切り替えます。

      SWITCH hive_catalog;
    2. データを表示します。

      外部カタログに切り替えると、内部カタログを使用するのと同じ方法で外部カタログのデータにアクセスできます。例:

      • データベースリストを表示するには、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, ...>

その他

未サポート