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

E-MapReduce:Hive コネクター

最終更新日:Aug 23, 2026

Hive コネクタでは、Hive データウェアハウスに保存されているデータをクエリおよび分析できます。

背景

Hive データウェアハウスには、次の 3 つのコンポーネントがあります。
  • さまざまなフォーマットのデータファイルで、通常、Hadoop 分散ファイルシステム (HDFS) または Alibaba Cloud OSS などのオブジェクトストレージシステムに保存されます。
  • データファイルをスキーマおよびテーブルにマッピングするメタデータで、MySQL などのデータベースに保存され、Hive メタストアサービス (HMS) を介してアクセスされます。
  • HiveQL と呼ばれるクエリ言語で、MapReduce や Tez などの分散コンピューティングフレームワーク上で実行されます。
このトピックでは、Hive コネクタについて、以下の内容を説明します。

前提条件

DataLake クラスターまたは Hadoop クラスターを作成し、Presto サービスを選択している必要があります。手順については、「クラスターの作成」をご参照ください。

制限

  • Hive コネクターを使用するには、Hive メタストアサービスが設定されている必要があります。
  • Hive コネクターは、HDFS、Alibaba Cloud OSS、およびその他の OSS 互換システムなど、さまざまな分散ストレージシステムをサポートしています。コーディネーターノードとすべてのワーカーノードは、Hive メタストアと基盤となるストレージシステムの両方にネットワークアクセスできる必要があります。デフォルトでは、Hive メタストアはポート 9083 で Thrift プロトコルを介して通信します。

Hive コネクター設定の変更

Hive コネクター設定を変更するには、「コネクターの設定」をご参照ください。

デフォルトのコネクター設定

EMR コンソールで、Presto サービスの Configure ページに移動します。Service Configuration セクションで、[hive.properties] タブをクリックします。次のパラメーターを表示し、必要に応じて変更できます。
パラメーター 説明
hive.recursive-directories テーブルまたはパーティションの場所のサブディレクトリからデータを読み取れるようにします。これは、Hive の hive.mapred.supports.subdirectories プロパティに類似しています。
hive.metastore.uri Thrift プロトコルを使用して Hive メタストアに接続するための URI です。

デフォルト値は thrift://<master-node-name>.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 クラスターの設定

複数の Hive クラスターがある場合は、etc/catalog ディレクトリに複数のカタログファイルを追加できます。各ファイルには .properties 拡張子が必要です。

たとえば、プロパティファイルの名前が sales.properties の場合、Presto はそのファイル内のコネクター設定を使用して、sales という名前のカタログを作成します。

HDFS 設定

Presto は HDFS クライアントを自動的に設定するため、通常は設定ファイルは必要ありません。ただし、フェデレーション HDFS や NameNode の高可用性を有効にする場合など、一部のケースでは、HDFS クラスターにアクセスするために追加の HDFS クライアントオプションを指定する必要があります。これを行うには、hive.config.resources プロパティを追加して、必要な HDFS 設定ファイルを参照します。
重要
  • 非互換性を防ぐため、ファイルには必要最小限のプロパティのみを含めてください。
  • 設定ファイルは、すべての Presto ホストに存在する必要があります。既存の Hadoop 設定ファイルを参照する場合は、Hadoop が実行されていない Presto ノードにもそれらをコピーしてください。

HDFS ユーザー名と権限

Presto で Hive テーブルに対して CREATE TABLE または CREATE TABLE AS ステートメントを実行する前に、Presto が HDFS へのアクセスに使用するユーザーに、Hive ウェアハウスディレクトリへの権限があることを確認してください。Hive ウェアハウスディレクトリは、hive-site.xml ファイルの hive.metastore.warehouse.dir プロパティで指定されます。デフォルト値は /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 コネクターは、以下のテーブルタイプをサポートしています。
タイプ 説明
ACID テーブル Hive メタストア バージョン 3.x に接続すると、Hive コネクターは挿入専用テーブルおよび ACID テーブルからの読み取りと書き込みができます。コネクターは、パーティションとバケットを完全にサポートしています。

ACID テーブルに対する行レベルの削除操作および更新操作をサポートしています。ただし、パーティションキー列とバケット列に対する更新操作はサポートしていません。コネクターは、Hive ストリーミングインジェストによって作成された ACID テーブルのクエリをサポートしていません。詳細については、Streaming Data Ingest をご参照ください。

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

Hive ビュー

Hive ビューは HiveQL で定義され、 Hive Metastore Service に格納されます。

Hive コネクターは、次の 3 つのモードで Hive ビューをサポートしています。
モード 説明
無効 ビューにエンコードされたビジネスロジックとデータには、 Presto からアクセスできません。

デフォルトでは、 Presto は Hive ビューを無視します。

レガシー Presto が Hive ビューからデータを読み取れるようにする、シンプルな実装です。

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

特定のカタログに対してレガシーアクセスを一時的に有効にするには、カタログセッションプロパティ legacy_hive_view_translation を true に設定します。

HiveQL は SQL と非常によく似ているため、レガシーモードではビューの HiveQL クエリを変換せずに標準 SQL として解釈します。

このアプローチはシンプルな Hive ビューでは機能しますが、複雑なクエリでは問題が発生する可能性があります。たとえば、 HiveQL 関数が SQL 関数と同じ関数シグネチャを持ちながら動作が異なる場合、結果が異なることがあります。より極端なケースでは、クエリの解析または実行が失敗する可能性があります。

試験的 このモードでは、式やステートメントを含む Hive ビューを分析、処理、書き換えます。

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

このモードは、次の機能をまだサポートしていません。
  • current_date、 current_timestamp などの HiveQL ステートメント。
  • translate()、 ウィンドウ関数などの Hive 関数呼び出し。
  • 共通テーブル式およびシンプルな CASE 式。
  • タイムスタンプ精度の設定。
  • すべての Hive データタイプから Presto タイプへの正確なマッピング。
  • カスタム UDF の処理。

設定プロパティ

Hive 設定プロパティ

Hive コネクターは、JindoTable によるアクセラレーションをサポートしています。E-MapReduce (EMR) クラスターには、hive.properties と hive-acc.properties の 2 つの組み込み Hive コネクターが含まれています。hive-acc.properties ファイルには、ORC または Parquet フォーマットのファイルを最適化および高速化する JindoTable Native Engine が含まれています。お使いのバージョンの SmartData のドキュメントをご参照ください。詳細については、「ネイティブクエリアクセラレーションの有効化」をご参照ください。

次の表に、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 単一のテーブルスキャンあたりの最大パーティション数です。

デフォルト値は 100,000 です。

hive.hdfs.authentication.type HDFS 認証タイプを指定します。有効な値:
  • NONE (デフォルト): Kerberos 認証なしの標準モード。
  • KERBEROS: Kerberos 認証ありのセキュアモード。
hive.hdfs.impersonation.enabled HDFS ユーザー偽装を有効にします。有効な値:
  • true: HDFS ユーザー偽装を有効にします。
  • false (デフォルト): HDFS ユーザー偽装を無効にします。
hive.hdfs.trino.principal Trino が 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 キャッシュされるファイルステータスエントリの最大合計数です。

デフォルト値は 1,000,000 です。

hive.file-status-cache-expire-time キャッシュされたファイルステータスの有効期間です。

デフォルト値は 1 m です。

hive.rcfile.time-zone バイナリエンコードされたタイムスタンプ値を指定されたタイムゾーンに調整します。

デフォルトは JVM のデフォルトタイムゾーンです。

説明 Hive 3.1 以降では、この値を UTC に設定する必要があります。
hive.timestamp-precision Hive のタイムスタンプ列の精度を指定します。有効な値:
  • MILLISECONDS
  • MICROSECONDS
  • NANOSECONDS

デフォルト値は MILLISECONDS です。

説明 設定された精度より高い値は丸められます。
hive.temporary-staging-directory-enabled 書き込み操作に hive.temporary-staging-directory-path で設定された一時ステージングディレクトリを使用するかどうかを制御します。一時ステージングディレクトリは、OSS、暗号化された HDFS、または外部ロケーションにある、ソートされていないテーブルへの書き込み時には使用されません。ソートされたテーブルへの書き込み時には、このパスがソート操作中の一時ファイルのステージングに使用されます。無効にした場合、ソートされたテーブルへの書き込み時にターゲットストレージがステージングに使用されますが、これはオブジェクトストレージでは非効率的な場合があります。

デフォルト値は 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 です。

説明 このプロパティが無効になっている場合、ライタースレッド数はバケット数に制限されます。

ORC フォーマット設定プロパティ

次のプロパティは、Hive コネクターが ORC ファイルを読み書きする方法を制御します。
パラメーター 説明
hive.orc.time-zone タイムゾーンを宣言していないレガシー ORC ファイルのデフォルトタイムゾーンを設定します。

デフォルトは JVM のデフォルトタイムゾーンです。

hive.orc.use-columns-names ORC 列に名前でアクセスするかどうかを制御します。

デフォルトでは、ORC ファイルの列は Hive テーブル定義で定義された順序でアクセスされます。この動作は、orc_use_column_names catalog session プロパティでも制御できます。

デフォルト値は false です。

Parquet フォーマット設定プロパティ

次のプロパティは、Hive コネクターが Parquet ファイルを読み書きする方法を制御します。
パラメーター 説明
hive.parquet.time-zone タイムスタンプ値を指定されたタイムゾーンに調整します。

デフォルトは JVM のデフォルトタイムゾーンです。

説明 Hive 3.1 以降では、この値を UTC に設定する必要があります。
hive.parquet.use-columns-names Parquet 列へのアクセス方法を制御します。有効な値:
  • true (デフォルト): Parquet 列に名前でアクセスします。列の順序はファイルと一致する必要はありません。
  • false: Hive テーブル定義で定義された順序で Parquet 列にアクセスします。
この動作は、parquet_use_column_names catalog session プロパティでも制御できます。

メタストア設定プロパティ

次のプロパティは、Hive メタストアを設定します。Thrift の追加設定プロパティについては、Thrift メタストア設定プロパティをご参照ください。
パラメーター 説明
hive.metastore 使用する Hive メタストアのタイプを指定します。Presto は、デフォルトの Hive Thrift メタストア (thrift) とその派生をサポートしています。

デフォルト値は thrift です。

hive.metastore-cache-ttl Hive メタストアキャッシュ内のメタストアデータの有効期間を指定します。

デフォルト値は 0 s です。

hive.metastore-cache-maximum-size キャッシュするメタストアデータオブジェクトの最大数です。

デフォルト値は 10000 です。

hive.metastore-refresh-interval アクセス後にキャッシュされたメタストアデータが非同期で更新される頻度を指定します。キャッシュされたデータが古いものの、有効期限が切れていない場合、その後のアクセスで更新されたデータを参照できます。
hive.metastore-refresh-max-threads メタストアキャッシュの更新に使用されるスレッドの最大数です。

デフォルト値は 10 です。

hive.metastore-timeout Hive メタストアリクエストのタイムアウトです。

デフォルト値は 10 s です。

Thrift メタストア設定プロパティ

次の表は、Hive コネクターの Thrift メタストア設定プロパティを説明しています。
パラメーター 説明
hive.metastore.uri Thrift プロトコルを使用して Hive メタストアに接続するための URI です。

複数の URI を指定した場合、最初の URI がデフォルトで使用され、それ以外はフォールバックメタストアとして使用されます。このプロパティは必須です。例: thrift://192.0.**.**:9083 または thrift://192.0.**.**:9083,thrift://192.0.**.**:9083。

hive.metastore.username Presto が Hive メタストアへのアクセスに使用するユーザー名です。
hive.metastore.authentication.type Hive メタストア認証タイプを指定します。有効な値:
  • NONE (デフォルト): Kerberos 認証なしの標準モード。
  • KERBEROS: Kerberos 認証ありのセキュアモード。
hive.metastore.thrift.impersonation.enabled Hive メタストアユーザー偽装を有効にします。
hive.metastore.thrift.delegation-token.cache-ttl メタストア委任トークンキャッシュの有効期間です。

デフォルト値は 1 h です。

hive.metastore.thrift.delegation-token.cache-maximum-size 委任トークンキャッシュの最大サイズです。

デフォルト値は 1000 です。

hive.metastore.thrift.client.ssl.enabled メタストアへの接続時に 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 メタストアサービスの Kerberos プリンシパルです。
hive.metastore.client.principal Presto が Hive メタストアサービスに接続する際に使用する Kerberos プリンシパルです。
hive.metastore.client.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 値数