Le moteur Fusion est un moteur d'exécution SQL vectorisé intégré à EMR Serverless Spark. Il offre des performances trois fois supérieures à celles de Spark open source lors des tests de référence TPC-DS. Entièrement compatible avec Spark open source, il ne nécessite aucune modification du code. Activez-le en cochant l'option Use Fusion Acceleration lors de la création d'une session.
Le moteur Fusion accélère les tâches Spark SQL et DataFrame. Il améliore les performances de la plupart des opérateurs, expressions et types de données.
Limites
Le moteur Fusion n'accélère pas les types de tâches suivants :
Tâches Resilient Distributed Dataset (RDD)
Tâches utilisant des fonctions définies par l'utilisateur (UDF)
Formats de stockage pris en charge
Parquet
Paimon
ORC (prise en charge partielle)
Opérateurs pris en charge
|
Type |
Opérateurs |
|
Source |
FileSourceScanExec, HiveTableScanExec, BatchScanExec, InMemoryTableScanExec |
|
Sink |
DataWritingCommandExec |
|
Opération courante |
FilterExec, ProjectExec, SortExec, UnionExec |
|
Agrégation |
HashAggregateExec |
|
Jointure |
BroadcastHashJoinExec, ShuffledHashJoinExec, SortMergeJoinExec, BroadcastNestedLoopJoinExec, CartesianProductExec |
|
Fenêtre |
WindowExec, WindowTopK |
|
Échange |
ShuffleExchangeExec, ReusedExchangeExec, BroadcastExchangeExec, CoalesceExec |
|
Limite |
GlobalLimitExec, LocalLimitExec, TakeOrderedAndProjectExec |
|
Sous-requête |
SubqueryBroadcastExec |
|
Autres |
ExpandExec, GenerateExec |
Opérateurs non pris en charge
|
Type |
Opérateurs |
|
Agrégation |
ObjectHashAggregateExec, SortAggregateExec |
|
Échange |
CustomShuffleReaderExec |
|
Pandas |
AggregateInPandasExec, FlatMapGroupsInPandasExec, ArrowEvalPythonExec, MapInPandasExec, WindowInPandasExec |
|
Autres |
CollectLimitExec, RangeExec, SampleExec |
Expressions prises en charge
|
Type |
Expressions |
||
|
Comparaison/Logique |
|
`, |
|
|
Arithmétique |
|
||
|
Bitwise |
|
`, |
|
|
Conditionnel |
|
||
|
Ensemble |
|
||
|
Chaîne |
|
||
|
Agrégation |
|
||
|
Fenêtre |
|
||
|
Temps |
|
||
|
JSON |
|
||
|
Tableau |
|
||
|
Map |
|
||
|
Encodage |
|
||
|
Autres |
|
Types de données pris en charge
Byte, Short, Int et Long
Boolean
String et Binary
Decimal
Float et Double
Date et Timestamp
Types de données non pris en charge
Struct
Array
Map
Activer et utiliser le moteur Fusion
Activez le moteur Fusion à l'aide de l'une des méthodes suivantes.
Méthode 1 : Activation dans la gestion des sessions
Lors de la création de sessions SQL, Notebook ou Spark Thrift Server, activez l'option Use Fusion Acceleration. Pour exécuter des tâches, sélectionnez une session pour laquelle l'accélération Fusion est activée afin d'utiliser le moteur Fusion.
Pour plus d'informations, consultez la rubrique Gérer les sessions.
Méthode 2 : Configuration des modèles de paramètres Spark
Dans la console EMR Serverless Spark, accédez à Configurations > Task Templates et ajoutez les paramètres liés à Fusion (spark.emr.serverless.fusion ou spark.emr.serverless.fusion.enabled) dans le modèle de configuration. Pour obtenir la liste complète des paramètres Spark, consultez la rubrique Paramètres Spark personnalisés.
Pour plus d'informations, consultez la rubrique Gérer les modèles de configuration Spark.
Méthode 3 : Configuration des paramètres Spark dans DataWorks
Configurez les paramètres Spark au niveau de l'espace de travail ou au niveau du nœud.
Configuration globale
Configurez les paramètres Spark au niveau de l'espace de travail pour les modules DataWorks exécutant des tâches EMR. Ajoutez le paramètre spark.emr.serverless.fusion ou spark.emr.serverless.fusion.enabled et définissez sa valeur sur true. Pour obtenir la liste complète des paramètres Spark, consultez la rubrique Paramètres Spark personnalisés.
Pour obtenir des instructions, consultez la rubrique Configurer les paramètres Spark globaux.
Configuration au niveau du nœud
Pour les nœuds Spark dans Data Studio, configurez les paramètres Spark dans les paramètres de planification situés à droite de la page d'édition du nœud. Ajoutez le paramètre spark.emr.serverless.fusion ou spark.emr.serverless.fusion.enabled et définissez sa valeur sur true. Pour obtenir la liste complète des paramètres Spark, consultez la rubrique Paramètres Spark personnalisés.
Pour obtenir des instructions, consultez la rubrique Configurer les paramètres Spark des nœuds.