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

ApsaraDB for SelectDB:Hive データソース

最終更新日:Aug 22, 2026

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

前提条件

  • Hive クラスター内のすべてのノードが SelectDB インスタンスとネットワーク接続できることを確認してください。

  • Hive が HDFS 上に構築されている場合は、Hive と SelectDB 間のデータ転送のために次のポートが開いていることを確認してください。

    • hive.metastore.uris で指定されたポート。 デフォルトポートは 9083 です。

    • dfs.namenode.rpc-address で指定されたポート。 デフォルトポートは 8020 です。

    • dfs.datanode.address で指定されたポート。 デフォルトポートは 9866 です。

  • カタログとは何か、またその基本的な操作方法を理解しておいてください。 詳細については、「カタログ」をご参照ください。

考慮事項

  • Hive バージョン 1、2、3 をサポートしています。

  • マネージドテーブル、外部テーブル、および一部の Hive ビューをサポートしています。

  • Hive メタストアに保存されている Hive、Iceberg、Hudi のメタデータの検出をサポートしています。

  • 現在、ApsaraDB for SelectDB は外部カタログ内のデータに対する読み取り操作のみをサポートしています。

サンプル環境

このトピックでは、Linux システムを例として使用します。 SelectDB では、HDFS 上に構築された Hive クラスター内の test_db.test_t に対してフェデレーテッドクエリを実行します。 例の値を、実際のシステムと環境に一致するものに置き換えてください。 サンプル環境は次のとおりです:

  • ユースケース:非 HA

  • Hive ストレージバックエンド:HDFS

  • ソースデータベース:test_db

  • ソーステーブル:test_t

ソースデータの準備

  1. Hive クラスターにログインします。

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

    CREATE database if NOT EXISTS test_db;
  3. test_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:インスタンスへの接続

SelectDB インスタンスに接続します。 手順については、「MySQL クライアントを使用した ApsaraDB for SelectDB インスタンスへの接続」をご参照ください。

ステップ 2:Hive の統合

SelectDB は、外部カタログを作成することで外部データソースを統合します。 ユースケースによって、必要なカタログプロパティが異なります。 ご使用の環境に合った構文とパラメーター値を選択してください。

カタログを作成すると、ApsaraDB for SelectDB はデータソースからデータベースとテーブルを自動的に同期します。 ApsaraDB for SelectDB は、異なるデータソースとテーブル形式の間で列をマッピングします。 Hive と SelectDB の間のタイプマッピングに慣れていない場合は、「列タイプのマッピング」をご参照ください。

HDFS 上の Hive

構文
CREATE CATALOG <catalog_name> PROPERTIES (
    'type'='<type>',
    'hive.metastore.uris' = '<hive.metastore.uris>',
    'hadoop.username' = '<hadoop.username>',
    'dfs.nameservices'='<your-nameservice>',
    '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 メタストアの URI。

  • 形式:thrift://<Hive メタストアの IP アドレス>:<ポート>

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

  • Hive CLI で SET hive.metastore.uris を実行して URI を取得できます。

HA シナリオ

パラメーター

必須

説明

catalog_name

はい

カタログの名前。

type

はい

カタログタイプ。 このパラメーターを hms に設定してください。

hive.metastore.uris

はい

Hive メタストアの URI。

  • 形式:thrift://<Hive メタストアの IP アドレス>:<ポート>

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

  • Hive CLI で SET hive.metastore.uris を実行して URI を取得できます。

hadoop.username

いいえ

HDFS のユーザー名。

dfs.nameservices

いいえ

ネームサービス名。 この値は、Hive 環境の hdfs-site.xml 設定ファイル内の dfs.nameservices の値と一致する必要があります。

dfs.ha.namenodes.your-nameservice

いいえ

NameNode ID のリスト。 この値は、Hive 環境の hdfs-site.xml 設定ファイル内の対応する値と一致する必要があります。

dfs.namenode.rpc-address.your-nameservice.[name node ID]

いいえ

NameNode の RPC アドレス。 アドレスの数は NameNode の数と同じである必要があり、アドレスは Hive 環境の hdfs-site.xml 設定ファイル内の対応する設定項目と一致する必要があります。

dfs.client.failover.proxy.provider.your-nameservice

いいえ

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'
);

Alibaba Cloud OSS 上の Hive

構文

構文は HDFS 上の Hive と同じですが、必要なパラメーターが異なります。

パラメーター

パラメーター

必須

説明

type

はい

カタログタイプ。 このパラメーターを hms に設定してください。

hive.metastore.uris

はい

Hive メタストアの URI。

  • 形式:thrift://<Hive メタストアの IP アドレス>:<ポート>

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

  • Hive CLI で SET hive.metastore.uris を実行して URI を取得できます。

oss.endpoint

はい

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

oss.access_key

はい

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

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 のデータベースとテーブルを表示します。

    説明

    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;

その他の操作:データ移行

データソースを統合した後、INSERT INTO ステートメントを使用して、Hive から SelectDB に履歴データを移行できます。 詳細については、「INSERT INTO」をご参照ください。

列タイプのマッピング

説明
  • 次の Hive メタストアタイプのマッピングは、Hive、Iceberg、Hudi など、Hive メタストアを使用するデータソースに適用されます。

  • Hive メタストアと 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>>

HMS タイプ

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, ...>

その他

サポート対象外