Fusion エンジンは、EMR Serverless Spark に組み込まれたベクトル化された SQL 実行エンジンです。TPC-DS ベンチマークテストでは、オープンソースの Spark よりも 3 倍優れたパフォーマンスを発揮します。Fusion エンジンはオープンソースの Spark と完全な互換性があるため、コードの変更は不要です。セッションの作成時に [Use Fusion Acceleration] スイッチをオンにすることで有効化できます。
Fusion エンジンは、Spark SQL と DataFrame のジョブを高速化します。ほとんどのオペレーター、式、データ型のパフォーマンスが向上します。
制限事項
Fusion エンジンは、以下の種類のジョブを高速化しません。
Resilient Distributed Dataset (RDD) ジョブ
ユーザー定義関数 (UDF) を使用するジョブ
サポートされているストレージフォーマット
Parquet
Paimon
ORC (部分的なサポート)
サポートされているオペレーター
タイプ | オペレーター |
ソース | FileSourceScanExec, HiveTableScanExec, BatchScanExec, InMemoryTableScanExec |
シンク | DataWritingCommandExec |
共通操作 | FilterExec, ProjectExec, SortExec, UnionExec |
集約 | HashAggregateExec |
結合 | BroadcastHashJoinExec, ShuffledHashJoinExec, SortMergeJoinExec, BroadcastNestedLoopJoinExec, CartesianProductExec |
ウィンドウ | WindowExec, WindowTopK |
Exchange | ShuffleExchangeExec, ReusedExchangeExec, BroadcastExchangeExec, CoalesceExec |
Limit | GlobalLimitExec, LocalLimitExec, TakeOrderedAndProjectExec |
サブクエリ | SubqueryBroadcastExec |
その他 | ExpandExec, GenerateExec |
サポートされていないオペレーター
タイプ | オペレーター |
集約 | ObjectHashAggregateExec, SortAggregateExec |
Exchange | CustomShuffleReaderExec |
Pandas | AggregateInPandasExec, FlatMapGroupsInPandasExec, ArrowEvalPythonExec, MapInPandasExec, WindowInPandasExec |
その他 | CollectLimitExec, RangeExec, SampleExec |
サポートされている式
タイプ | 式 |
比較/論理 |
|
算術 |
|
ビット単位 |
|
条件 |
|
セット |
|
文字列 |
|
集約 |
|
ウィンドウ |
|
時間 |
|
JSON |
|
配列 |
|
Map |
|
エンコーディング |
|
その他 |
|
サポートされているデータ型
Byte、Short、Int、Long
ブール値
文字列とバイナリ
10 進数
Float と Double
Date とタイムスタンプ
サポートされていないデータ型
構造体
配列
Map
Fusion エンジンの有効化と使用
Fusion エンジンは、以下のいずれかの方法で有効にできます。
方法 1:セッション管理での有効化
SQL、ノートブック、または Spark Thrift Server のセッションを作成する際に、[Use Fusion Acceleration] オプションをオンにします。タスクを実行する際は、Fusion アクセラレーションが有効になっているセッションを選択して Fusion エンジンを使用します。
詳細については、「セッションの管理」をご参照ください。
方法 2:Spark パラメーターテンプレートの設定
EMR Serverless Spark コンソールで、[Configurations] > [Task Templates] に移動し、設定テンプレートに Fusion 関連のパラメーター (spark.emr.serverless.fusion または spark.emr.serverless.fusion.enabled) を追加します。Spark パラメーターの完全なリストについては、「カスタム Spark パラメーター」をご参照ください。
詳細については、「Spark 設定テンプレートの管理」をご参照ください。
方法 3:DataWorks での Spark パラメーター設定
Spark パラメーターは、ワークスペースレベルまたはノードレベルで設定できます。
グローバル設定
EMR タスクを実行する DataWorks モジュールに対して、ワークスペースレベルの Spark パラメーターを設定します。パラメーター spark.emr.serverless.fusion または spark.emr.serverless.fusion.enabled を追加し、値を true に設定します。Spark パラメーターの完全なリストについては、「カスタム Spark パラメーター」をご参照ください。
手順については、「グローバル Spark パラメーターの設定」をご参照ください。
ノードレベル設定
Data Studio の Spark ノードの場合、ノード編集ページの右側にあるスケジューリング設定で Spark パラメーターを設定します。パラメーター spark.emr.serverless.fusion または spark.emr.serverless.fusion.enabled を追加し、値を true に設定します。Spark パラメーターの完全なリストについては、「カスタム Spark パラメーター」をご参照ください。
手順については、「ノード Spark パラメーターの設定」をご参照ください。