Introdução ao motor Gluten Spark acelerado
O motor Gluten acelerado Spark é um motor otimizado e de alto desempenho no site watsonx.data. O mecanismo Spark usa o Gluten para transferir a execução de SQL para o Velox, que é um mecanismo de execução de código aberto (implementado em C++), acelerando assim o cálculo de SparkSQL para reduzir o custo de execução das cargas de trabalho.
O Gluten funciona como um plug-in de mecanismo nativo projetado para acelerar as cargas de trabalho do Spark SQL e do DataFrame, integrando mecanismos nativos com o SparkSQL,, aproveitando a alta escalabilidade da estrutura do Spark SQL e o desempenho superior dos mecanismos nativos. Ele é totalmente compatível com a API Apache Spark, garantindo que não sejam necessárias alterações no código.
Recursos do motor Gluten Spark acelerado
-
Oferece suporte aos formatos de arquivo Apache Parquet e Apache Avro.
-
Melhoria no desempenho da varredura de tabelas.
-
Acelera consultas SQL maiores com junções e agregação.
-
Compatível com os catálogos Delta, Hudi, Iceberg e Hive.
-
Gravação mais rápida de Delta e Parquet usando UPDATE, DELETE, MERGE INTO, INSERT e CREATE TABLE AS SELECT, incluindo tabelas amplas que contêm milhares de colunas.
-
Substitui as junções de mesclagem de classificação por junções de hash por padrão.
Limitações
-
O uso dos repositórios de objetos Amazon S3 suporta DAS para envio de aplicativos, mas outros repositórios de objetos, como ADLS e GCS, exigem que sejam passadas credenciais explícitas.
-
As consultas menores não são aceleradas.
-
A associação de catálogo só é compatível com os armazenamentos de objetos do site s3.
-
Alternativas para a JVM
-
ANSI: atualmente, o Gluten não oferece suporte ao modo ANSI. Se o ANSI estiver ativado, a execução do plano do Spark sempre voltará para o Spark básico.
-
FileSource formato: Atualmente, o Gluten suporta apenas o formato de arquivo Parquet e suporta parcialmente o ORC. Se outro formato for usado, o operador de varredura voltará a usar o formato vanilla spark.
-
-
Comportamento incompatível
-
Funções JSON: O Velox suporta apenas cadeias de caracteres cercadas por aspas duplas, e não por aspas simples, em dados JSON. Se forem usadas aspas simples, o Gluten apresentará um resultado incorreto.
-
Configuração de leitura de parquet: Gluten suporta
spark.files.ignoreCorruptFilescom o padrão false; se verdadeiro, o comportamento é o mesmo da configuração false. O Gluten ignoraspark.sql.parquet.datetimeRebaseModeInRead, ele retorna apenas o que foi gravado no arquivo parquet. Ele não considera a diferença entre o calendário legado híbrido (gregoriano juliano) e o calendário gregoriano proléptico. O resultado pode ser diferente com a faísca de baunilha. -
Configuração de gravação de parquet: O Spark tem a configuração
spark.sql.parquet.datetimeRebaseModeInWritepara decidir se o calendário híbrido legado (Juliano + Gregoriano) ou o calendário gregoriano proléptico deve ser usado durante a gravação do parquet para datas/carimbos de data/hora. Se o Parquet a ser lido for gravado pelo Spark com essa configuração como verdadeira, o TableScan do Velox produzirá um resultado diferente ao lê-lo de volta.
-
-
Derramamento
OutOfMemoryException ainda pode ser acionado na implementação atual do recurso de derramamento para disco, quando as partições embaralhadas são definidas como um número grande. Quando esse caso ocorrer, tente reduzir o número da partição para se livrar do OOM.
-
Leitura de CSV
-
A opção de cabeçalho deve ser verdadeira. E agora só oferecemos suporte a DatasourceV1, ou seja, o usuário deve definir spark.sql.sources.useV1SourceList=csv. Não há suporte para a opção de leitura definida pelo usuário, o que fará com que a leitura de CSV retorne ao Spark básico na maioria dos casos. A leitura de CSV também voltará para o Spark comum e registrará um aviso quando o usuário especificar que o esquema é diferente do esquema do arquivo.
-
Para obter informações mais detalhadas sobre as limitações do Gluten, consulte Limitação.
-
-
Gluten não é compatível com o ambiente habilitado para FIPS.
Práticas recomendadas para o glúten
-
O Gluten requer memória OffHeap grande, pois se integra ao backend nativo, ou seja, o Velox, usando o formato colunar OffHeap da Apache Arrow, que é essencial para o processamento de dados em grande escala sem exceder os limites de heap da JVM.
-
Se não for fornecido com memória offHeap suficiente, pode levar a possíveis OOMs (consulte Limitação ). Portanto, por padrão, 75% da memória do executor está definida como offHeap.
-
Os usuários podem ajustar a porcentagem de memória definida para offHeap, usando a configuração
ae.spark.offHeap.factor, que aceita valores (0-1) exclusivos, por exemplo: 0.75. -
Recomenda-se que os usuários definam isso como um valor mais baixo, ou seja, < 0.5 se a carga de trabalho tiver muitos fallbacks para o Spark baseado em Java. (consulte Limitação ) para que não ocorra OOM durante a execução do Spark baseado em Java.
-
Recomenda-se definir esse valor como mais alto, ou seja, 0.75 e acima, se as cargas de trabalho forem executadas nativamente no Gluten sem fallback.
Por padrão, o valor definido é 0.75.