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

E-MapReduce:Hiveコネクタ

最終更新日:Mar 18, 2025

Hiveコネクタを使用して、Hiveデータウェアハウス内のデータをクエリおよび分析できます。

背景情報

Hiveデータウェアハウスシステムは、以下の部分で構成されています。

  • さまざまな形式のデータファイル。ほとんどの場合、データファイルはHadoop Distributed File System(HDFS)またはAlibaba Cloud Object Storage Service(OSS)などのオブジェクトストレージシステムに保存されます。

  • データファイルがスキーマとテーブルにどのようにマッピングされるかについてのメタデータ。メタデータは、MySQLデータベースなどのデータベースに保存されます。 Hive metastoreを使用してメタデータにアクセスできます。

  • HiveQLと呼ばれるクエリ言語。このクエリ言語は、MapReduceやTezなどの分散コンピューティングフレームワークで実行されます。

前提条件

DataLakeクラスターまたはHadoopクラスターが作成され、Prestoサービスが選択されています。詳細については、「クラスターを作成する」をご参照ください。

制限

  • Hiveコネクタを構成するには、最初にHive metastoreを構成する必要があります。

  • Hiveコネクタは、HDFS、Alibaba Cloud OSS、OSS互換システムなど、さまざまな分散ストレージシステムをサポートしています。 Hiveコネクタを使用して、分散ストレージシステムからデータをクエリできます。 Prestoのコーディネーターノードとすべてのワーカーノードが、構成したHive metastoreと、クエリするデータが格納されている分散ストレージシステムにアクセスできることを確認してください。デフォルトでは、ポート 9083 経由で Thrift プロトコルを使用して Hive metastore にアクセスできます。

Hiveコネクタの構成を変更する

このセクションでは、Hiveコネクタの構成を変更する方法について説明します。詳細については、「コネクタの設定」をご参照ください。

Hiveコネクタのデフォルト構成

EMRコンソールのPrestoサービスページに移動し、[構成] タブをクリックし、[hive.properties] タブをクリックします。次の表で説明されているパラメーターが表示されます。ビジネス要件に基づいてこれらのパラメーターを変更します。

パラメーター

説明

hive.recursive-directories

テーブルまたはパーティションのサブディレクトリからデータを読み取ることができるかどうかを指定します。このパラメーターは、Hiveの hive.mapred.supports.subdirectories プロパティに似ています。

hive.metastore.uri

Thriftプロトコルに基づいてHive metastoreにアクセスするために使用されるUniform Resource Identifier(URI)。

デフォルトでは、このパラメーターは thrift://<マスターノードの名前>.cluster-24****:9083 の形式の値に設定されています。

hive.config.resources

HDFS構成ファイル。複数の構成ファイルを指定する場合は、ファイル名をコンマ(,)で区切ります。 Prestoを実行しているすべてのホストに構成ファイルが存在することを確認してください。

重要

HDFSにアクセスする必要がある場合にのみ、このパラメーターを設定します。

hive.delta-table-enabled

PrestoがDelta Lakeテーブルからデータを読み取ることができるかどうかを指定します。有効な値:

  • true: PrestoはDelta Lakeテーブルからデータを読み取ることができます。これがデフォルト値です。

  • false: PrestoはDelta Lakeテーブルからデータを読み取ることができません。

hive.delta-compatible-mode-enabled

Delta Lakeテーブルの互換モードが有効になっているかどうかを指定します。有効な値:

  • true: Delta Lakeテーブルの互換モードが有効になっています。これがデフォルト値です。

  • false: Delta Lakeテーブルの互換モードが無効になっています。

hive.hdfs.impersonation.enabled

ユーザーの偽装を有効にするかどうかを指定します。有効な値:

  • true: ユーザーの偽装が有効になっています。

  • false: ユーザーの偽装が無効になっています。

複数 Hive クラスターの構成

etc/catalog ディレクトリに複数の構成ファイルを作成することで、複数の Hive クラスターを扱うことができます。ファイル名の拡張子は .properties である必要があります。

たとえば、sales.properties という名前の構成ファイルを作成した場合、Presto はそのファイルで構成されたコネクタを使用して sales という名前のカタログを作成します。

HDFS構成

ほとんどの場合、HDFSクライアントはPresto用に自動的に構成されるため、構成ファイルを指定する必要はありません。ただし、特別なシナリオでは、HDFSクラスターにアクセスする場合にHDFSクライアントを指定する必要があります。たとえば、HDFSフェデレーションを有効にするか、NameNodeを高可用性モードでデプロイする場合は、必要なHDFS構成ファイルを参照するために hive.config.resources プロパティを追加する必要があります。

重要
  • 構成ファイルは必要な場合にのみ指定することをお勧めします。こうすることで、構成ファイルの数と含まれるプロパティの数が最小限に抑えられ、プロパティの非互換性の可能性が低くなります。

  • 構成ファイルがPrestoを実行しているすべてのホストに存在することを確認してください。既存のHadoop構成ファイルを参照する場合は、Hadoopが実行されていないすべてのPrestoノードに構成ファイルがコピーされていることを確認してください。

HDFSユーザー名と権限

Prestoで CREATE TABLE ステートメントまたは CREATE TABLE AS ステートメントを実行してHiveテーブルを作成する前に、PrestoからHDFSにアクセスするために使用するアカウントに、Hiveのウェアハウスディレクトリにアクセスするための権限があるかどうかを確認してください。 Hiveウェアハウスディレクトリは、hive.metastore.warehouse.dirhive-site.xml ファイルの構成変数 /user/hive/warehouse で指定されます。デフォルト値は です。

サポートされているファイルの種類

Hiveコネクタは、次の表で説明されているファイルの種類をサポートしています。

ファイルの種類

備考

ORC

該当なし

Parquet

該当なし

Avro

該当なし

RCText

ColumnarSerDe クラスを使用するRCFileを指します。

RCBinary

LazyBinaryColumnarSerDe クラスを使用するRCFileを指します。

SequenceFile

該当なし

JSON

org.apache.hive.hcatalog.data.JsonSerDe クラスが使用されます。

CSV

org.apache.hadoop.hive.serde2.OpenCSVSerde クラスが使用されます。

TextFile

該当なし

サポートされているテーブルの種類

Hiveコネクタは、次の表で説明されているテーブルの種類をサポートしています。

テーブルの種類

説明

Atomicity, Consistency, Isolation, Durability(ACID)テーブル

バージョン 3.X の Hive metastore を使用している場合、Hive コネクタを使用して、挿入専用テーブルおよび ACID テーブルからデータを読み取ったり、データに書き込んだりできます。この場合、パーティショニングとバケット化は完全にサポートされています。

ACID テーブルに対して行レベルの DELETE 操作と UPDATE 操作を実行できます。パーティションキー列またはバケット列で UPDATE 操作を実行したり、Hive Streaming Ingest を使用して ACID テーブルを作成したりすることはできません。詳細については、「Streaming Data Ingest」を参照してください。

マテリアライズドビュー

Hiveコネクタを使用して、Hiveのマテリアライズドビューからデータを読み取ることができます。 Prestoでは、マテリアライズドビューは通常の読み取り専用テーブルとして表示されます。

Hiveビュー

HiveビューはHiveQLで定義され、Hive metastoreに保存されます。

Hiveコネクタは、無効、レガシー、および実験の次のモードでHiveビューをサポートしています。

モード

説明

無効

このモードでは、ビューにエンコードされているビジネスロジックとデータはPrestoでは見えません。

Hiveビューはデフォルトで無視されます。

レガシー

このモードでは、Hiveビューはシンプルで、Prestoでデータを読み取ることができます。

このモードを有効にするには、hive.translate-hive-views=truehive.legacy-hive-view-translation=true を指定します。

特定のカタログに対してこの従来のアクセスモードを一時的に有効にする場合は、カタログセッションプロパティ legacy_hive_view_translation をtrueに設定できます。

HiveQLはSQLに似ています。ビューを定義するHiveQLクエリは、SQLで記述されたクエリのように解釈されます。変換は必要ありません。

このモードは単純なHiveビューに適していますが、複雑なクエリでは問題が発生する可能性があります。たとえば、HiveQL関数がSQLと同じシグネチャを持っているが動作が異なる場合、返される結果が異なる場合があります。極端なシナリオでは、クエリが失敗するか、解析および実行されない場合があります。

実験

このモードでは、ビューに含まれる式やステートメントを含め、Hiveビューを分析、処理、および書き直すことができます。

このモードを有効にするには、hive.translate-hive-views=true を指定します。

このモードを使用する場合、次の機能はサポートされていません。

  • current_datecurrent_timestamp、およびその他の類似のHiveQL関数

  • translate()、ウィンドウ関数、およびその他の類似のHive関数

  • 共通テーブル式と単純なcase式

  • タイムスタンプ精度の設定

  • Hiveデータ型とPrestoデータ型の正しいマッピング

  • ユーザー定義関数(UDF)の処理

構成プロパティ

Hive構成プロパティ

Hiveコネクタは、JindoTableに基づくクエリ高速化をサポートしています。各EMRクラスターには、hive.propertieshive-acc.properties の 2 つの組み込み Hive コネクタがあります。 JindoTable のネイティブエンジンは、hive-acc.properties コネクタに組み込まれています。ネイティブエンジンは、ORCファイルまたはParquetファイルのクエリを高速化します。 JindoTableに基づくクエリ高速化の詳細については、SmartDataバージョンの関連トピックを参照してください。たとえば、SmartData 3.6.Xを使用している場合は、「ネイティブエンジンに基づいてクエリ高速化を有効にする」をご参照ください。

次の表に、Hiveコネクタの構成プロパティを示します。

プロパティ

説明

hive.config.resources

HDFS構成ファイル。複数の構成ファイルを指定する場合は、ファイル名をコンマ(,)で区切ります。Prestoを実行しているすべてのホストに構成ファイルが存在することを確認してください。

説明

HDFSにアクセスする必要がある場合にのみ、このプロパティを構成します。

hive.recursive-directories

テーブルまたはパーティションのサブディレクトリからデータを読み取ることができるかどうかを指定します。このプロパティは、Hiveの hive.mapred.supports.subdirectories プロパティに似ています。

hive.ignore-absent-partitions

パーティションに指定されたシステムファイルパスが存在しない場合に、クエリ失敗を報告するのではなく、パーティションを無視するかどうかを指定します。パーティションが無視されると、テーブルの一部のデータがスキップされる可能性があります。

デフォルト値: false。

hive.storage-format

テーブルを作成するときに使用されるデフォルトのファイル形式。

デフォルト値: ORC。

hive.compression-codec

ファイルにデータを書き込むときに使用されるファイルエンコード方式。有効な値: NONE、SNAPPY、LZ4、ZSTD、GZIP。

デフォルト値: GZIP。

hive.force-local-scheduling

Hadoop DataNode がスプリットのデータを処理するノードでスプリットを強制的にスケジュールするかどうかを指定します。これにより、Presto が各 DataNode と同じ場所に配置されているシナリオでのインストール効率が向上します。

デフォルト値: false。

hive.respect-table-format

新しいパーティションのデータが既存のテーブル形式で書き込まれるか、デフォルトのPresto形式で書き込まれるかを指定します。有効な値:

  • true: 既存のテーブル形式。これがデフォルト値です。

  • false: デフォルトのPresto形式。

hive.immutable-partitions

既存のパーティションに新しいデータを挿入できるかどうかを指定します。

このプロパティを true に設定すると、hive.insert-existing-partitions-behavior プロパティを APPEND に設定できません。

デフォルト値: false。

hive.insert-existing-partitions-behavior

既存のパーティションにデータを挿入するモード。有効な値:

  • APPEND: データは既存のパーティションに追加されます。これがデフォルト値です。

  • OVERWRITE: 既存のパーティションのデータは上書きされます。

  • ERROR: 既存のパーティションのデータを変更することはできません。

hive.create-empty-bucket-files

データが格納されていないバケットに空のファイルを作成するかどうかを指定します。有効な値:

  • true: 空のファイルが作成されます。

  • false: 空のファイルは作成されません。これがデフォルト値です。

hive.max-partitions-per-writers

ライターあたりの最大パーティション数。

デフォルト値: 100。

hive.max-partitions-per-scan

単一テーブルスキャンあたりの最大パーティション数。

デフォルト値: 100000。

hive.hdfs.authentication.type

HDFS認証モード。有効な値:

  • NONE: 共通モード。Kerberos認証は無効になっています。これがデフォルト値です。

  • KERBEROS: セキュリティモード。Kerberos認証が有効になっています。

hive.hdfs.impersonation.enabled

HDFSユーザーの偽装を有効にするかどうかを指定します。有効な値:

  • true: 偽装が有効になっています。

  • false: 偽装が無効になっています。これがデフォルト値です。

hive.hdfs.trino.principal

PrestoがHDFSに接続するときに使用されるKerberosプリンシパル。

hive.hdfs.trino.keytab

HDFSクライアントのキーファイルのパス。

hive.dfs.replication

HDFSレプリケーション係数。

hive.security

セキュリティプロパティ。デフォルト値: legacy。詳細については、「Hiveコネクタのセキュリティ構成」を参照してください。

security.config-file

構成ファイルのパス。 hive.security プロパティをfileに設定した場合、このプロパティは必須です。

hive.non-managed-table-writes-enabled

管理対象外(外部)Hiveテーブルへのデータ書き込みを有効にするかどうかを指定します。

デフォルト値: false。

hive.non-managed-table-creates-enabled

管理対象外(外部)Hiveテーブルの作成を有効にするかどうかを指定します。

デフォルト値: true。

hive.collect-column-statistics-on-write

データ書き込み中に列レベルの統計情報の自動収集を有効にするかどうかを指定します。詳細については、「構成プロパティ」をご参照ください。

デフォルト値: true。

hive.file-status-cache-tables

キャッシュされるテーブルを指定します。

たとえば、fruit.apple,fruit.orange は、fruitスキーマのappleテーブルとorangeテーブルのみがキャッシュされることを示します。 fruit.*,vegetable.* は、fruitスキーマとvegetableスキーマのすべてのテーブルがキャッシュされることを示します。 * は、すべてのスキーマのすべてのテーブルがキャッシュされることを示します。

hive.file-status-cache-size

キャッシュされたファイルステータスエントリの最大数。

デフォルト値: 1000000。

hive.file-status-cache-expire-time

キャッシュされたディレクトリリストの有効期間。

デフォルト値: 1。単位: 分。

hive.rcfile.time-zone

バイナリエンコードされたタイムスタンプ値が調整されるタイムゾーン。

デフォルト値: JVMデフォルト。

説明

Hive 3.1以降のバージョンを使用する場合は、このプロパティをUTCに設定する必要があります。

hive.timestamp-precision

TIMESTAMP型のHive列の精度。有効な値:

  • MILLISECONDS

  • MICROSECONDS

  • NANOSECONDS

デフォルト値: MILLISECONDS。

説明

精度の高い値は丸められます。

hive.temporary-staging-directory-enabled

hive.temporary-staging-directory-path プロパティで指定された一時ステージングディレクトリを使用してデータ書き込みをサポートするかどうかを指定します。OSS、暗号化されたHDFS、または外部システムのソートされていないテーブルにデータを書き込む場合、一時ステージングディレクトリを使用することはできません。このプロパティをtrueに設定すると、ソートされたテーブルにデータを書き込むときに、ソート操作中に一時ファイルの格納に一時ステージングディレクトリが使用されます。このプロパティをfalseに設定すると、ソート操作中に一時ファイルの格納に宛先ストレージが使用されます。これにより、オブジェクトストレージシステムのソートされたテーブルへのデータ書き込みの効率が低下します。

デフォルト値: true。

hive.temporary-staging-directory-path

データ書き込みに使用される一時ステージングディレクトリのパス。

デフォルト値: /tmp/presto-${USER}

説明

${USER} プレースホルダーを使用して、ユーザーごとに一意の場所を指定できます。

hive.translate-hive-views

Hiveビューの変換を有効にするかどうかを指定します。

デフォルト値: false。

hive.legacy-hive-view-translation

従来のアルゴリズムを使用してHiveビューを変換するかどうかを指定します。特定のカタログに対して、カタログセッションプロパティ legacy_hive_view_translation を指定できます。

デフォルト値: false。

hive.parallel-partitioned-bucketed-writes

パーティションテーブルおよびバケットテーブルへのデータ書き込みの並列性を向上させるかどうかを指定します。

デフォルト値: true。

説明

このプロパティをfalseに設定すると、書き込みスレッドの数はバケットの数を超えることはできません。

ORCファイルの構成プロパティ

次の表に、Hiveコネクタを使用してORCファイルからデータを読み取ったり、ORCファイルにデータを書き込んだりする際に構成されるプロパティを示します。

プロパティ

説明

hive.orc.time-zone

タイムゾーンを宣言していない初期ORCバージョンのORCファイルのデフォルトのタイムゾーン。

デフォルト値: JVMデフォルト。

hive.orc.use-columns-names

名前でORCファイルの列にアクセスするかどうかを指定します。

デフォルトでは、ORCファイルの列には、Hiveテーブル定義でのシーケンシャルな位置に基づいてアクセスされます。同等のカタログセッションプロパティは orc_use_column_names です。

デフォルト値: false。

Parquetファイルの構成プロパティ

次の表に、Hiveコネクタを使用してParquetファイルからデータを読み取ったり、Parquetファイルにデータを書き込んだりする際に構成されるプロパティを示します。

プロパティ

説明

hive.parquet.time-zone

タイムスタンプ値が調整されるタイムゾーン。

デフォルト値: JVMデフォルト。

説明

Hive 3.1以降のバージョンを使用する場合は、このプロパティをUTCに設定する必要があります。

hive.parquet.use-columns-names

名前でParquetファイルの列にアクセスするかどうかを指定します。有効な値:

  • true: Parquetファイルの列には、名前でアクセスされます。定義する列シーケンスは、Parquetファイルの列シーケンスと一致する必要はありません。

  • false: Parquetファイルの列には、Hiveテーブル定義でのシーケンシャルな位置に基づいてアクセスされます。

同等のカタログセッションプロパティは parquet_use_column_names です。

Hive metastore の構成プロパティ

次の表に、Hive metastore の構成プロパティを示します。専用のプロパティを使用して、Thrift プロトコルに基づいて接続された Hive metastore を構成できます。詳細については、「Thrift ベースの Hive metastore の構成プロパティ」をご参照ください。

プロパティ

説明

hive.metastore

使用される Hive metastore の種類。Presto は、デフォルトの Thrift ベースの Hive metastore (thrift) とその派生物をサポートしています。

デフォルト値: thrift。

hive.metastore-cache-ttl

Hive metastore にキャッシュされた metastore データの有効期間。

デフォルト値: 0。単位: 秒。

hive.metastore-cache-maximum-size

Hive metastore にキャッシュされた metastore データオブジェクトの最大数。

デフォルト値: 10000。

hive.metastore-refresh-interval

データアクセス操作後にキャッシュされた metastore データが非同期的に更新される間隔。期限切れでないデータのみが更新されます。データ更新機能により、後続のアクセスで最新のデータが取得されます。

hive.metastore-refresh-max-threads

キャッシュされた metastore データの更新に使用されるスレッドの最大数。

デフォルト値: 10。

hive.metastore-timeout

Hive metastore リクエストのタイムアウト期間。

デフォルト値: 10。単位: 秒。

Thrift ベースの Hive metastore の構成プロパティ

次の表に、Hive コネクタの Thrift ベースの Hive metastore の構成プロパティを示します。

プロパティ

説明

hive.metastore.uri

Thrift プロトコルに基づいて Hive metastore にアクセスするために使用される URI。

複数の URI が構成されている場合、デフォルトで最初の URI が使用されます。他の URI に対応する Hive metastore は、セカンダリ metastore と見なされます。このプロパティは必須です。例: thrift://192.0.**.**:9083 または thrift://192.0.**.**:9083,thrift://192.0.**.**:9083

hive.metastore.username

Presto が Hive metastore にアクセスするために使用するユーザー名。

hive.metastore.authentication.type

Hive metastore の認証モード。有効な値:

  • NONE: 共通モード。Kerberos 認証は無効になっています。これがデフォルト値です。

  • KERBEROS: セキュリティモード。Kerberos 認証が有効になっています。

hive.metastore.thrift.impersonation.enabled

Hive metastore のユーザー偽装を有効にするかどうかを指定します。

hive.metastore.thrift.delegation-token.cache-ttl

Hive metastore の委任トークンキャッシュの有効期間。

デフォルト値: 1。単位: 時間。

hive.metastore.thrift.delegation-token.cache-maximum-size

委任トークンキャッシュの最大サイズ。

デフォルト値: 1000。

hive.metastore.thrift.client.ssl.enabled

Hive metastore が接続されているときに SSL を有効にするかどうかを指定します。有効な値:

  • true: SSL が有効になっています。

  • false: SSL が無効になっています。これがデフォルト値です。

hive.metastore.thrift.client.ssl.key

キーストア内の秘密キーとクライアント証明書のパス。

hive.metastore.thrift.client.ssl.key-password

秘密キーのパスワード。

hive.metastore.thrift.client.ssl.trust-certificate

トラストストア内のサーバー証明書チェーンのパス。

説明

SSL が有効になっている場合、このプロパティは必須です。

hive.metastore.thrift.client.ssl.trust-certificate-password

サーバー証明書チェーンのパスワード。

hive.metastore.service.principal

Hive metastore の Kerberos プリンシパル。

hive.metastore.client.principal

Presto が Hive metastore に接続するときに使用される Kerberos プリンシパル。

hive.metastore.client.keytab

Hive metastore クライアントの keytab ファイルのパス。

パフォーマンスチューニングの構成プロパティ

次の表に、Hive コネクタのパフォーマンスチューニングの構成プロパティを示します。

重要

次の表のプロパティのデフォルト設定を変更すると、Hive コネクタのパフォーマンスが不安定になったり、低下したりする可能性があります。注意して進めてください。

プロパティ

説明

hive.max-outstanding-splits

スケジューラが一時停止を試みる前に、クエリ内の各テーブルスキャンでキャッシュされるスプリットの最大数。

デフォルト値: 1000。

hive.max-splits-per-second

各テーブルスキャンで 1 秒あたりに生成されるスプリットの最大数。このプロパティを使用して、ストレージシステムの負荷を軽減できます。デフォルトでは、制限は指定されておらず、Presto はデータアクセス並列性を最大化します。

hive.max-initial-splits

初期スプリットの最大数。各テーブルスキャンについて、コーディネーターノードは最初に初期スプリットを割り当て、各スプリットのサイズは max-initial-split-size の値を超えることはできません。コーディネーターノードが初期スプリットを割り当てた後、コーディネーターコードが引き続き割り当てることができるスプリットの最大数は、max-split-size プロパティによって決まります。

デフォルト値: 200。

hive.max-initial-split-size

割り当て済みのスプリットの数が max-initial-splits プロパティの値以下の場合に、ワーカーノードに割り当てられる各スプリットの最大サイズ。スプリットサイズが小さい場合、データアクセス並列度は高くなります。これにより、小規模クエリの速度が向上します。

デフォルト値: 32。単位: MB。

hive.max-split-size

ワーカーノードに割り当てられる単一スプリットの最大サイズ。スプリットサイズが小さい場合、データアクセス並列度は高くなります。これにより、レイテンシは短縮されますが、オーバーヘッドとシステム負荷が増加します。

デフォルト値: 64。単位: MB。

テーブル統計

Hive コネクタを使用して、テーブル統計を収集および管理できます。その後、統計に基づいてクエリのパフォーマンスを向上させることができます。

Hive コネクタを使用してデータを書き込む場合、コネクタはファイル数、行数、生データのサイズ、合計データサイズなどの基本情報を収集します。コネクタは、次の表に示す列レベルの統計も収集します。

列の型

収集可能な情報

TINYINT

null 値の数、個別値の数、最大値または最小値

SMALLINT

null 値の数、個別値の数、最大値または最小値

INTEGER

null 値の数、個別値の数、最大値または最小値

BIGINT

null 値の数、個別値の数、最大値または最小値

DOUBLE

null 値の数、個別値の数、最大値または最小値

REAL

null 値の数、個別値の数、最大値または最小値

DECIMAL

null 値の数、個別値の数、最大値または最小値

DATE

null 値の数、個別値の数、最大値または最小値

TIMESTAMP

null 値の数、個別値の数、最大値または最小値

VARCHAR

null 値の数と個別値の数

CHAR

null 値の数と個別値の数

VARBINARY

null 値の数

BOOLEAN

null 値の数と true または false 値の数