全部產品
Search
文件中心

E-MapReduce:Fusion引擎

更新時間:May 26, 2026

Fusion引擎是EMR Serverless Spark內建的高效能向量化SQL執行引擎,相比開源Spark在TPC-DS基準測試上有3倍效能提升。Fusion引擎與開源Spark完全相容,您無需對現有代碼做任何修改。在EMR Serverless Spark中,只需在建立會話時開啟使用Fusion加速開關,即可啟用該引擎。

Fusion加速適用情境

Fusion引擎加速適用於Spark SQL和DataFrame任務,支援大部分的運算元、運算式和資料類型實現效能提升,而對於RDD任務或者包含使用者自訂函數(UDF)的執行階段暫不支援加速效果。

儲存格式

Fusion引擎支援的資料存放區格式,如下所示。

  • Parquet

  • Paimon

  • ORC(partial)

運算元

Fusion引擎為大部分常見運算元提供加速,具體分類如下所示。

類型

運算元列表

Source

  • FileSourceScanExec

  • HiveTableScanExec

  • BatchScanExec

  • InMemoryTableScanExec

Sink

DataWritingCommandExec

常見操作

  • FilterExec

  • ProjectExec

  • SortExec

  • UnionExec

彙總

HashAggregateExec

Join

  • BroadcastHashJoinExec

  • ShuffledHashJoinExec

  • SortMergeJoinExec

  • BroadcastNestedLoopJoinExec

  • CartesianProductExec

視窗

  • WindowExec

  • WindowTopK

Exchange

  • ShuffleExchangeExec

  • ReusedExchangeExec

  • BroadcastExchangeExec

  • CoalesceExec

Limit

  • GlobalLimitExec

  • LocalLimitExec

  • TakeOrderedAndProjectExec

Subquery

SubqueryBroadcastExec

其他

  • ExpandExec

  • GenerateExec

運算式

Fusion引擎目前支援的運算式,如下所示。

類型

運算式列表

比較/邏輯

!、!=、<、<=、>、>=、<=>、<>、=、==、||、and、between、is not null、is null、negative、null if、or

算術

%、+、-、*、/、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

位元運算

^、|、&、~、bit_and、bit_count、bit_or、bit_xor、bit_length

條件運算式

case、if、when

集合

in、find_in_set

String計算

ascii、char、chr、char_length、character_length、concat、instr、lcase、lower、length、locate、lower、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

彙總

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

視窗

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

時間

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

array

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

編碼

crc32、hash、md5、sha1、sha2

其他

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

資料類型

Fusion引擎支援的資料類型,如下所示。

  • Byte、Short、Int、Long

  • Boolean

  • String、Binary

  • Decimal

  • Float、Double

  • Date、Timestamp

Fusion加速暫不支援的情境

運算元

類型

運算元

彙總

  • ObjectHashAggregateExec

  • SortAggregateExec

Exchange

CustomShuffleReaderExec

Pandas

  • AggregateInPandasExec

  • FlatMapGroupsInPandasExec

  • ArrowEvalPythonExec

  • MapInPandasExec

  • WindowInPandasExec

其他

  • CollectLimitExec

  • RangeExec

  • SampleExec

資料類型

  • Struct

  • Array

  • Map

開啟和使用Fusion引擎

方式一:在會話管理中開啟

在建立SQL、Notebook或Spark Thrift Server會話時,勾選使用Fusion加速選項即可開啟Fusion加速。在執行任務時,選擇已開啟Fusion加速的會話即可使用Fusion引擎。

更多資訊,請參見會話管理

方式二:在Spark配置模板中設定

您可以在EMR Serverless Spark控制台的配置模板中添加Fusion相關參數(如spark.emr.serverless.fusionspark.emr.serverless.fusion.enabled)。全部Spark參數,請參見Spark Conf自訂參數列表

更多資訊,請參見管理Spark配置模板

方式三:在DataWorks中配置Spark參數

全域級配置

全域級配置是指設定工作空間層級某DataWorks功能模組運行EMR任務時使用的Spark參數。可以添加參數spark.emr.serverless.fusionspark.emr.serverless.fusion.enabled,並將其值設定為true以開啟Fusion引擎。全部Spark參數,請參見Spark Conf自訂參數列表

詳細配置指引,請參見設定全域Spark參數

節點級配置

節點級配置適用於以下範圍:

  • 資料開發(Data Studio):對於Spark節點,可在節點編輯頁面右側的調度配置中設定。

  • 其他產品模組:暫不支援在模組內單獨設定。

您可以添加參數spark.emr.serverless.fusionspark.emr.serverless.fusion.enabled,並將其值設定為true以開啟Fusion引擎。全部Spark參數,請參見Spark Conf自訂參數列表

詳細配置指引,請參見節點Spark參數配置