フュージョンエンジンは、EMR Serverless Spark に組み込まれた高性能なベクトル化 SQL 実行エンジンです。TPC-DS ベンチマークテストでは、オープンソースの Spark よりも 3 倍優れたパフォーマンスを発揮します。フュージョンエンジンは、オープンソースの Spark と完全な互換性があります。既存のコードを変更する必要はありません。EMR Serverless Spark では、セッションを作成する際に [フュージョンアクセラレーションを使用] スイッチをオンにすることで、このエンジンを有効にできます。
対応シナリオ
Fusionエンジンは、Spark SQLおよびDataFrameジョブに適しています。 Fusionエンジンを使用すると、ほとんどの演算子、式、およびデータ型の性能を向上させることができます。 ただし、Fusionエンジンは、Resilient Distributed Dataset(RDD)ジョブの実行や、ユーザー定義関数(UDF)が使用されているジョブの実行を高速化することはできません。
ストレージ形式
Fusionエンジンは、次のデータストレージ形式をサポートしています。
Parquet
Paimon
ORC(一部)
演算子
Fusionエンジンは、ほとんどの一般的な演算子の高速化を提供します。 次の表に、演算子を示します。
種類 | オペレーターリスト |
ソース |
|
シンク | DataWritingCommandExec |
共通操作 |
|
集計 | HashAggregateExec |
参加 |
|
ウィンドウ |
|
交換 |
|
制限 |
|
サブクエリ | SubqueryBroadcastExec |
その他 |
|
式
次の表に、Fusionエンジンでサポートされている式を示します。
種類 | 式リスト |
比較/論理 | =、==、!=、<>、<、<=、>、>=、<=>、is null、is not null、between、and、or、||、!、negative、null if |
算術 | %, +, -, *, /, 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, and tanh |
ビット単位 | ^, |, &, ~, bit_and, bit_count, bit_or, bit_xor, and bit_length |
条件式 | case, if, and when |
集合 | in and find_in_set |
文字列計算 | ascii, char, chr, char_length, character_length, concat, instr, lcase, lower, length, locate, lower, lpad, and ltrim overlay, replace, reverse, rtrim, split, split_part, substr, substring, trim, ucase, upper, like, regexp, regexp_extract, regexp_extract_all, regexp_like, regexp_replace, and 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, and variance |
ウィンドウ | cume_dist, dense_rank, lag, lead, nth_value, ntile, percent_rank, rank, and 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, and year |
JSON | get_json_object and json_array_length |
配列 | 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, and sort_array |
マップ | map, get_map_value, map_from_arrays, map_keys, map_values, map_zip_with, named_struct, struct, and str_to_map |
エンコーディング | crc32, hash, md5, sha1, and sha2 |
その他 | current_catalog, current_database, greatest, least, monotonically_increasing_id, nanvl, spark_partition_id, stack, uuid, and rand |
データ型
Fusionエンジンは、次のデータ型をサポートしています。
Byte、Short、Int、および Long
Boolean
String および Binary
Decimal
Float および Double
Date および Timestamp
未対応のシナリオ
演算子
種類 | 演算子 |
集計 |
|
交換 | CustomShuffleReaderExec |
Pandas |
|
その他 |
|
データ型
Struct
Array
Map