Tous les produits
Search
Centre de documentation

E-MapReduce:Fusion engine

Dernière mise à jour :Aug 09, 2026

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

=, ==, !=, <>, <, <=, >, >=, <=>, is null, is not null, between, and, or, `

`, !, negative, null if

Arithmétique

%, +, -, *, /, isnan, mod, negative, not, positive, abs, acos, acosh, asin, asinh, atan, atan2, atanh, cbrt, ceil, ceiling, cos, cosh, degrees, e, exp, floor, ln, log, log10, log2, pi, pmod, pow, power, radians, rand, random, rint, round, shiftleft, shiftright, sign, signum, sin, sqrt, tan, tanh

Bitwise

^, `

`, &, ~, bit_and, bit_count, bit_or, bit_xor, bit_length

Conditionnel

case, if, when

Ensemble

in, find_in_set

Chaîne

ascii, char, chr, char_length, character_length, concat, instr, lcase, lower, length, locate, lpad, ltrim, overlay, replace, reverse, rtrim, split, split_part, substr, substring, trim, ucase, upper, like, regexp, regexp_extract, regexp_extract_all, regexp_like, regexp_replace, rlike

Agrégation

aggregate, approx_count_distinct, avg, collect_list, collect_set, corr, count, covar_pop, covar_samp, first, first_value, kurtosis, last, last_value, max, max_by, mean, min, regr_avgx, regr_avgy, regr_count, regr_r2, regr_intercept, regr_slope, regr_sxy, regr_sxx, regr_syy, skewness, std, stddev, stddev_pop, stddev_samp, sum, var_pop, var_samp, variance

Fenêtre

cume_dist, dense_rank, lag, lead, nth_value, ntile, percent_rank, rank, row_number

Temps

add_months, current_date, current_timestamp, current_timezone, date, date_add, date_format, date_from_unix_date, date_sub, datediff, day, dayofmonth, dayofweek, dayofyear, from_unixtime, from_utc_timestamp, hour, last_day, make_date, minute, month, next_day, now, quarter, second, timestamp_micros, timestamp_millis, to_date, to_unix_timestamp, unix_seconds, unix_millis, unix_micros, weekday, weekofyear, year

JSON

get_json_object, json_array_length

Tableau

array, array_contains, array_distinct, array_except, array_intersect, array_join, array_max, array_min, array_position, array_remove, array_repeat, array_sort, arrays_overlap, arrays_zip, element_at, exists, filter, forall, flatten, shuffle, size, sort_array

Map

map, get_map_value, map_from_arrays, map_keys, map_values, map_zip_with, named_struct, struct, str_to_map

Encodage

crc32, hash, md5, sha1, sha2

Autres

current_catalog, current_database, greatest, least, monotonically_increasing_id, nanvl, spark_partition_id, stack, uuid, rand

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.