EMR Serverless Spark は Apache Spark 上で実行され、標準の Java 仮想マシン (JVM) 上で、Java または Scala のコードを使用してすべてのタスクを実行します。このページでは、エンジンバージョンの形式、各エンジンバージョンにバンドルされているコンポーネントのバージョン、およびジョブの動作に影響を与える可能性のある Spark のデフォルト設定のオーバーライドについて説明します。
バージョン番号の形式
各エンジンバージョンは、esr-** (Spark **, Scala **) という形式です。
| セグメント |
意味 |
esr-** |
EMR Serverless Spark のバージョン番号です。例:esr-2.1。 |
Spark ** |
エンジンがビルドされている Apache Spark のバージョンです。例:Spark 3.3.1 は、エンジンが Apache Spark 3.3.1 上にビルドされていることを意味します。 |
Scala ** |
このエンジンバージョンがサポートする Scala のバージョンです。例:Scala 2.12。 |
Fusion エンジンのランタイム環境を使用して、ベクトルベースのテクノロジーとネイティブライブラリにアクセスすると、SQL アプリケーションの実行パフォーマンスを向上させることができます。詳細については、「Fusion エンジン」をご参照ください。
エンジンバージョンとレイクテーブル形式のサポート
次の表は、各エンジンバージョンにバンドルされているコンポーネントのバージョンを示しています。ダッシュ (-) は、そのエンジンバージョンがそのコンポーネントをサポートしていないことを意味します。
5.x シリーズ
| エンジンバージョン |
Spark バージョン |
Scala バージョン |
Delta Lake バージョン |
Apache Hudi バージョン |
Apache Iceberg バージョン |
Apache Paimon バージョン |
JDK バージョン |
| esr-5.3.0 |
4.1.1 |
2.13 |
4.2.0 |
- |
- |
1.4 |
JDK 17 |
| esr-5.2.0 |
4.0.1 |
2.13 |
- |
- |
- |
1.3 |
JDK 17 |
| esr-5.1.0 |
4.0.1 |
2.13 |
- |
- |
- |
1.3 |
JDK 17 |
| esr-5.0.0 |
4.0.1 |
2.13 |
- |
- |
- |
1.3 |
JDK 17 |
4.x シリーズ
| エンジンバージョン |
Spark バージョン |
Scala バージョン |
Delta Lake バージョン |
Apache Hudi バージョン |
Apache Iceberg バージョン |
Apache Paimon バージョン |
JDK バージョン |
| esr-4.9.1, esr-4.9.0 |
3.5.2 |
2.12 |
3.3.2 |
0.15 |
1.10.1 |
1.4 |
JDK 17 |
| esr-4.8.0 |
3.5.2 |
2.12 |
3.3.2 |
0.15 |
1.9.2 |
1.3 |
JDK 17 |
| esr-4.7.0 |
3.5.2 |
2.12 |
3.2.1 |
0.15 |
1.9.2 |
1.3 |
JDK 17 |
| esr-4.6.0 |
3.5.2 |
2.12 |
3.2.1 |
0.15 |
1.9.2 |
1.3 |
JDK 17 |
| esr-4.5.1, esr-4.5.0 |
3.5.2 |
2.12 |
3.2.1 |
0.15 |
1.9.2 |
1.2 |
JDK 17 |
| esr-4.4.1, esr-4.4.0 |
3.5.2 |
2.12 |
3.2.1 |
0.15 |
1.5.0 |
1.2 |
JDK 8 |
| esr-4.3.0 |
3.5.2 |
2.12 |
3.2.1 |
0.15 |
1.5.0 |
1.1 |
JDK 8 |
| esr-4.2.0 |
3.5.2 |
2.12 |
3.2.1 |
0.15 |
1.5.0 |
1.0 |
JDK 8 |
| esr-4.1.1, esr-4.1.0 |
3.5.2 |
2.12 |
3.2.1 |
0.15 |
1.5.0 |
1.0 |
JDK 8 |
| esr-4.0.0 |
3.5.2 |
2.12 |
3.2.1 |
0.15 |
1.5.0 |
1.0 |
JDK 8 |
3.x シリーズ
| エンジンバージョン |
Spark バージョン |
Scala バージョン |
Delta Lake バージョン |
Apache Hudi バージョン |
Apache Iceberg バージョン |
Apache Paimon バージョン |
JDK バージョン |
| esr-3.8.0 |
3.4.4 |
2.12 |
3.0.0 |
0.15 |
1.5.0 |
1.4 |
JDK 8 |
| esr-3.7.0 |
3.4.4 |
2.12 |
3.0.0 |
0.15 |
1.5.0 |
1.3 |
JDK 8 |
| esr-3.6.0 |
3.4.4 |
2.12 |
3.0.0 |
0.15 |
1.5.0 |
1.3 |
JDK 8 |
| esr-3.5.0 |
3.4.4 |
2.12 |
3.0.0 |
0.15 |
1.5.0 |
1.3 |
JDK 8 |
| esr-3.4.1, esr-3.4.0 |
3.4.4 |
2.12 |
3.0.0 |
0.15 |
1.5.0 |
1.2 |
JDK 8 |
| esr-3.3.1, esr-3.3.0 |
3.4.4 |
2.12 |
3.0.0 |
0.15 |
1.5.0 |
1.1 |
JDK 8 |
| esr-3.2.0 |
3.4.4 |
2.12 |
3.0.0 |
0.15 |
1.5.0 |
1.0 |
JDK 8 |
| esr-3.1.1, esr-3.1.0 |
3.4.4 |
2.12 |
3.0.0 |
0.15 |
1.5.0 |
1.0 |
JDK 8 |
| esr-3.0.1, esr-3.0.0 |
3.4.3 |
2.12 |
3.0.0 |
0.15 |
1.5.0 |
1.0 |
JDK 8 |
2.x シリーズ
| エンジンバージョン |
Spark バージョン |
Scala バージョン |
Delta Lake バージョン |
Apache Hudi バージョン |
Apache Iceberg バージョン |
Apache Paimon バージョン |
JDK バージョン |
| esr-2.9.0 |
3.3.1 |
2.12 |
2.2.0 |
0.15 |
1.5.0 |
1.3 |
JDK 8 |
| esr-2.8.1, esr-2.8.0 |
3.3.1 |
2.12 |
2.2.0 |
0.15 |
1.5.0 |
1.2 |
JDK 8 |
| esr-2.7.1, esr-2.7.0 |
3.3.1 |
2.12 |
2.2.0 |
0.15 |
1.1.0 |
1.1 |
JDK 8 |
| esr-2.6.0 |
3.3.1 |
2.12 |
2.2.0 |
0.14 |
1.1.0 |
1.0 |
JDK 8 |
| esr-2.5.1, esr-2.5.0 |
3.3.1 |
2.12 |
2.2.0 |
0.14 |
1.1.0 |
1.0 |
JDK 8 |
| esr-2.4.1, esr-2.4.0 |
3.3.1 |
2.12 |
2.2.0 |
0.14 |
1.1.0 |
1.0 |
JDK 8 |
| esr-2.2.3, esr-2.2.2, esr-2.2 |
3.3.1 |
2.12 |
2.2.0 |
0.14 |
1.1.0 |
0.9 |
JDK 8 |
| esr-2.1 |
3.3.1 |
2.12 |
2.2.0 |
0.14 |
1.1.0 |
0.9 |
JDK 8 |
デフォルトパラメーターの調整
パフォーマンスと安定性を向上させるため、EMR Serverless Spark は Spark の一部のデフォルト設定をオーバーライドします。これらのオーバーライドはすべてのエンジンバージョン (esr-2.x から esr-5.x) に適用され、ジョブの動作がオープンソースの Spark とは異なる場合があります。ジョブを実行する前に、これらの変更がビジネスロジックに影響を与えるかどうかを評価してください。
| パラメーター |
EMR Serverless Spark のデフォルト |
オープンソース Spark のデフォルト |
考えられる影響 |
spark.sql.sources.partitionOverwriteMode |
DYNAMIC |
STATIC |
DYNAMIC では、出力データに含まれるパーティションのみを上書きします。STATIC では、新しいデータが含まれていなくても、ターゲットパス内の既存のすべてのパーティションを上書きします。完全なパーティションの置換に依存するジョブでは、この違いを考慮する必要があります。 |
spark.sql.mapKeyDedupPolicy |
LAST_WIN |
EXCEPTION |
LAST_WIN では、重複したマップキーは最後の値を保持することでサイレントに解決されます。EXCEPTION では、重複したマップキーが検出されるとエラーをスローします。以前にデータ検証のためにエラーをスローする動作に依存していたジョブは、期待どおりに失敗しなくなります。 |