O Fusion engine é um mecanismo de execução SQL vetorizado integrado ao EMR Serverless Spark. Ele oferece desempenho três vezes superior ao do Spark open source em testes de benchmark TPC-DS. O Fusion engine é totalmente compatível com o Spark open source, portanto, não é necessário alterar o código. Para ativá-lo, ative a opção Use Fusion Acceleration ao criar uma sessão.
O Fusion engine acelera jobs do Spark SQL e DataFrame. Ele melhora o desempenho da maioria dos operadores, expressões e tipos de dados.
Limitações
O Fusion engine não acelera os seguintes tipos de job:
Jobs de Resilient Distributed Dataset (RDD)
Jobs que utilizam funções definidas pelo usuário (UDFs)
Formatos de armazenamento compatíveis
Parquet
Paimon
ORC (suporte parcial)
Operadores compatíveis
|
Tipo |
Operadores |
|
source |
FileSourceScanExec, HiveTableScanExec, BatchScanExec, InMemoryTableScanExec |
|
Sink |
DataWritingCommandExec |
|
Operação comum |
FilterExec, ProjectExec, SortExec, UnionExec |
|
Agregação |
HashAggregateExec |
|
Join |
BroadcastHashJoinExec, ShuffledHashJoinExec, SortMergeJoinExec, BroadcastNestedLoopJoinExec, CartesianProductExec |
|
Window |
WindowExec, WindowTopK |
|
Exchange |
ShuffleExchangeExec, ReusedExchangeExec, BroadcastExchangeExec, CoalesceExec |
|
Limit |
GlobalLimitExec, LocalLimitExec, TakeOrderedAndProjectExec |
|
Subquery |
SubqueryBroadcastExec |
|
Outros |
ExpandExec, GenerateExec |
Operadores incompatíveis
|
Tipo |
Operadores |
|
Agregação |
ObjectHashAggregateExec, SortAggregateExec |
|
Exchange |
CustomShuffleReaderExec |
|
Pandas |
AggregateInPandasExec, FlatMapGroupsInPandasExec, ArrowEvalPythonExec, MapInPandasExec, WindowInPandasExec |
|
Outros |
CollectLimitExec, RangeExec, SampleExec |
Expressões compatíveis
|
Tipo |
Expressões |
||
|
Comparação/Lógica |
|
`, |
|
|
Aritmética |
|
||
|
Bitwise |
|
`, |
|
|
Condicional |
|
||
|
Conjunto |
|
||
|
String |
|
||
|
Agregação |
|
||
|
Window |
|
||
|
Tempo |
|
||
|
JSON |
|
||
|
Array |
|
||
|
Map |
|
||
|
Codificação |
|
||
|
Outros |
|
Tipos de dados compatíveis
Byte, Short, Int e Long
Boolean
String e Binary
Decimal
Float e Double
Date e Timestamp
Tipos de dados incompatíveis
Struct
Array
Map
Ativar e usar o Fusion engine
Ative o Fusion engine por meio de um dos métodos abaixo.
Método 1: Ativar no gerenciamento de sessões
Ao criar sessões SQL, Notebook ou Spark Thrift Server, ative a opção Use Fusion Acceleration. Durante a execução de tarefas, selecione uma sessão com a aceleração Fusion habilitada para utilizar o Fusion engine.
Para mais informações, consulte Gerenciar sessões.
Método 2: Configure modelos de parâmetros do Spark
No console do EMR Serverless Spark, acesse Configurations > Task Templates e adicione os parâmetros relacionados ao Fusion (spark.emr.serverless.fusion ou spark.emr.serverless.fusion.enabled) no modelo de configuração. Para obter a lista completa de parâmetros do Spark, consulte Parâmetros personalizados do Spark.
Para mais informações, consulte Gerenciar modelos de configuração do Spark.
Método 3: Configure parâmetros do Spark no DataWorks
Configure os parâmetros do Spark no nível do workspace ou no nível do nó.
Configuração global
Configure os parâmetros do Spark no nível do workspace para módulos do DataWorks que executam tarefas do EMR. Adicione o parâmetro spark.emr.serverless.fusion ou spark.emr.serverless.fusion.enabled e defina-o como true. Para obter a lista completa de parâmetros do Spark, consulte Parâmetros personalizados do Spark.
Para instruções detalhadas, consulte Configure parâmetros globais do Spark.
Configuração no nível do nó
Para nós Spark no Data Studio, configure os parâmetros do Spark nas configurações de agendamento, no lado direito da página de edição do nó. Adicione o parâmetro spark.emr.serverless.fusion ou spark.emr.serverless.fusion.enabled e defina-o como true. Para obter a lista completa de parâmetros do Spark, consulte Parâmetros personalizados do Spark.
Para instruções detalhadas, consulte Configure parâmetros do Spark no nó.