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

E-MapReduce:ネイティブクエリ高速化の有効化

最終更新日:Mar 27, 2026

JindoTable のネイティブエンジンは、JindoFS または Object Storage Service (OSS) に保存されている ORC および Parquet ファイルに対するクエリを高速化します。既存の SQL や DataFrame のコードを変更する必要はありません。このトピックでは、E-MapReduce (EMR) で Spark、Hive、Presto のクエリ高速化を有効にする方法について説明します。

前提条件

開始する前に、以下の準備が整っていることを確認してください:

  • EMR クラスターが作成されていること

  • JindoFS または OSS に ORC または Parquet ファイルが保存されていること

クラスターの作成については、「クラスターの作成」をご参照ください。

制限事項

すべてのエンジンに以下の制限事項が適用されます:

  • バイナリファイルはサポートされていません。

  • パーティションキー列の値がファイルに保存されているパーティション分割テーブルはサポートされていません。

  • V5.X.X 以降のバージョンの EMR クラスターはサポートされていません。

  • spark.read.schema (userDefinedSchema) はサポートされていません。

  • DATE 型の値は YYYY-MM-DD 形式を使用し、1400-01-01 から 9999-12-31 までの範囲内である必要があります。

  • テーブルに同じ名前で大文字と小文字が異なる 2 つの列 (例: NAMEname) がある場合、それらの列に対するクエリは高速化できません。

エンジンとファイル形式のサポート:

エンジン ORC Parquet
Spark2 サポート サポート
Spark3 サポート サポート
Presto サポート サポート
Hive2 非サポート サポート
Hive3 非サポート サポート

エンジンとファイルシステムのサポート:

エンジン OSS JindoFS HDFS (Hadoop 分散ファイルシステム)
Spark2 サポート サポート サポート
Presto サポート サポート サポート
Hive2 サポート サポート 非サポート
Hive3 サポート サポート 非サポート

Spark のクエリ高速化の有効化

説明

クエリ高速化はオフヒープメモリを使用します。Spark ジョブに --conf spark.executor.memoryOverhead=4g を追加して、高速化のため追加のメモリを割り当ててください。

ネイティブエンジンでデータを読み取るには、DataFrame API または Spark SQL を使用します。他の API はサポートされていません。

クエリ高速化は、すべての Spark ジョブに対してグローバルに有効にするか、個々のジョブレベルで有効にすることができます。

オプション 1:グローバル設定 (コンソール)

  1. Alibaba Cloud EMR コンソールにログインします。

  2. 上部のナビゲーションバーで、ご利用のクラスターのリージョンを選択します。

  3. [クラスター管理] タブをクリックします。

  4. クラスターを見つけ、[詳細][操作] 列でクリックします。

  5. 左側のナビゲーションウィンドウで、[クラスターサービス] > [Spark] を選択します。

  6. [設定] タブをクリックします。

  7. spark.sql.extensions パラメーターを検索し、その値を次のように設定します:

    io.delta.sql.DeltaSparkSessionExtension,com.aliyun.emr.sql.JindoTableExtension
  8. 右上の [保存] をクリックします。[変更の確認] ダイアログボックスで、説明を入力して [OK] をクリックします。

  9. 右上の [アクション] > [ThriftServer の再起動] を選択します。[クラスターアクティビティ] ダイアログボックスで、説明を入力して [OK] をクリックします。その後、確認メッセージで [OK] をクリックします。

オプション 2:ジョブレベルの設定

Spark Shell または Spark SQL ジョブを送信する際に、次のフラグを追加します:

--conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.aliyun.emr.sql.JindoTableExtension

詳細については、「Spark Shell ジョブの設定」または「Spark SQL ジョブの設定」をご参照ください。

高速化が有効になっていることの確認

  1. Spark History Server の Web UI を開きます。

  2. [SQL] タブをクリックし、ご利用のクエリを見つけます。

クエリプランに JindoDataSourceV2Scan が表示されていれば、高速化はアクティブです。表示されない場合は、上記の手順で spark.sql.extensions の設定を確認してください。

check_Jindo

Presto のクエリ高速化の有効化

重要

Presto はクエリ高速化にオフヒープメモリを使用し、高いクエリ同時実行数をサポートします。この機能を有効にする前に、クラスターに 10 GB 以上の使用可能なメモリがあることを確認してください。

説明

Presto でクエリ高速化を使用する場合、複雑なデータ型 (MAP、STRUCT、ARRAY) はサポートされていません。

Presto サービスには、ネイティブエンジンを使用する hive-acc という名前の組み込みカタログが含まれています。高速化を有効にするには、このカタログを使用して Presto に接続します:

presto --server emr-header-1:9090 --catalog hive-acc --schema default

他の設定は必要ありません。

Hive のクエリ高速化の有効化

重要

ジョブに高い安定性要件がある場合は、Hive のクエリ高速化を有効にしないでください。

説明

Hive でクエリ高速化を使用する場合、複雑なデータ型 (MAP、STRUCT、ARRAY) はサポートされていません。

EMR コンソールまたは Hive CLI を使用してクエリ高速化を有効にできます。

オプション 1:EMR コンソール

  1. Hive サービスページで、[設定] タブをクリックします。

  2. hive.jindotable.native.enabled パラメーターを検索し、その値を true に設定します。

  3. 設定を保存し、Hive サービスを再起動します。

この方法は、Hive on MapReduce と Hive on Tez の両方のジョブに適用されます。

hive

オプション 2:Hive CLI

CLI で次のコマンドを実行します:

set hive.jindotable.native.enabled=true;

Parquet ファイル用のクエリ高速化プラグインは、EMR V3.35.0 以降にデフォルトで含まれています。追加のインストールは必要ありません。