All Products
Search
Document Center

E-MapReduce:Fusion engine

Last Updated:May 26, 2026

Fusion engine adalah mesin eksekusi SQL vektorisasi yang terintegrasi dalam EMR Serverless Spark. Performanya tiga kali lebih baik dibandingkan Spark open source berdasarkan pengujian benchmark TPC-DS. Fusion engine sepenuhnya kompatibel dengan Spark open source, sehingga tidak memerlukan perubahan kode. Aktifkan fitur ini dengan mengaktifkan sakelar Use Fusion Acceleration saat membuat sesi.

Fusion engine mempercepat pekerjaan Spark SQL dan DataFrame serta meningkatkan performa untuk sebagian besar operator, ekspresi, dan tipe data.

Batasan

Fusion engine tidak mempercepat jenis pekerjaan berikut:

  • Resilient Distributed Dataset (RDD) jobs

  • Pekerjaan yang menggunakan user-defined functions (UDFs)

Format penyimpanan yang didukung

  • Parquet

  • Paimon

  • ORC (dukungan parsial)

Operator yang didukung

Type

Operators

Source

FileSourceScanExec, HiveTableScanExec, BatchScanExec, InMemoryTableScanExec

Sink

DataWritingCommandExec

Common operation

FilterExec, ProjectExec, SortExec, UnionExec

Aggregation

HashAggregateExec

Join

BroadcastHashJoinExec, ShuffledHashJoinExec, SortMergeJoinExec, BroadcastNestedLoopJoinExec, CartesianProductExec

Window

WindowExec, WindowTopK

Exchange

ShuffleExchangeExec, ReusedExchangeExec, BroadcastExchangeExec, CoalesceExec

Limit

GlobalLimitExec, LocalLimitExec, TakeOrderedAndProjectExec

Subquery

SubqueryBroadcastExec

Others

ExpandExec, GenerateExec

Operator yang tidak didukung

Type

Operators

Aggregation

ObjectHashAggregateExec, SortAggregateExec

Exchange

CustomShuffleReaderExec

Pandas

AggregateInPandasExec, FlatMapGroupsInPandasExec, ArrowEvalPythonExec, MapInPandasExec, WindowInPandasExec

Others

CollectLimitExec, RangeExec, SampleExec

Ekspresi yang didukung

Type

Expressions

Comparison/Logic

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

Arithmetic

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

Conditional

case, if, when

Set

in, find_in_set

String

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

Aggregation

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

Window

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

Time

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

Encoding

crc32, hash, md5, sha1, sha2

Others

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

Tipe data yang didukung

  • Byte, Short, Int, dan Long

  • Boolean

  • String dan Binary

  • Decimal

  • Float dan Double

  • Date dan Timestamp

Tipe data yang tidak didukung

  • Struct

  • Array

  • Map

Aktifkan dan gunakan Fusion engine

Anda dapat mengaktifkan Fusion engine menggunakan salah satu metode berikut.

Metode 1: Aktifkan di manajemen session

Saat membuat sesi SQL, Notebook, atau Spark Thrift Server, aktifkan opsi Use Fusion Acceleration. Saat menjalankan tugas, pilih sesi yang telah diaktifkan akselerasi Fusion untuk menggunakan Fusion engine.

Untuk informasi selengkapnya, lihat Manage sessions.

Metode 2: Konfigurasikan template parameter Spark

Di konsol EMR Serverless Spark, buka Configurations > Task Templates dan tambahkan parameter terkait Fusion (spark.emr.serverless.fusion atau spark.emr.serverless.fusion.enabled) dalam template konfigurasi. Untuk daftar lengkap parameter Spark, lihat Custom Spark parameters.

Untuk informasi selengkapnya, lihat Mengelola templat konfigurasi Spark.

Metode 3: Konfigurasikan parameter Spark di DataWorks

Anda dapat mengonfigurasi parameter Spark di tingkat ruang kerja atau tingkat node.

Konfigurasi global

Konfigurasikan parameter Spark tingkat ruang kerja untuk modul DataWorks yang menjalankan tugas EMR. Tambahkan parameter spark.emr.serverless.fusion atau spark.emr.serverless.fusion.enabled dan atur nilainya menjadi true. Untuk daftar lengkap parameter Spark, lihat Custom Spark parameters.

Untuk petunjuknya, lihat Configure global Spark parameters.

Konfigurasi tingkat node

Untuk node Spark di Data Studio, konfigurasikan parameter Spark di pengaturan penjadwalan pada sisi kanan halaman pengeditan node. Tambahkan parameter spark.emr.serverless.fusion atau spark.emr.serverless.fusion.enabled dan atur nilainya menjadi true. Untuk daftar lengkap parameter Spark, lihat Custom Spark parameters.

Untuk petunjuknya, lihat Configure node Spark parameters.