O JindoTable utiliza um mecanismo nativo para acelerar consultas em arquivos ORC ou Parquet no Spark, Hive ou Presto. Este tópico explica como ative a aceleração de consulta nativa para melhorar o desempenho do Spark, Hive e Presto.
Pré-requisitos
Você deve ter um cluster do E-MapReduce com seus arquivos ORC ou Parquet armazenados no JindoFS ou OSS. Para mais informações, consulte crie um cluster.
Limitações
Não é possível acelerar arquivos do tipo binário.
Não há suporte para tabelas particionadas se os valores de suas colunas de chave de partição estiverem armazenados nos arquivos de dados.
Clusters do E-MapReduce da versão EMR-5.X e posteriores não são compatíveis.
O uso de
spark.read.schema(userDefinedSchema)não é compatível.Há suporte para tipos de data apenas no intervalo de 1400-01-01 a 9999-12-31.
Não é possível utilizar tabelas que contêm nomes de colunas que diferem apenas em maiúsculas e minúsculas (por exemplo,
NAMEename). Os nomes das colunas são tratados sem distinção entre maiúsculas e minúsculas durante a aceleração de consulta nativa.-
Os mecanismos e formatos de armazenamento suportados para Spark, Hive e Presto são os seguintes.
Mecanismo
ORC
Parquet
Spark2
Suportado
Suportado
Spark3
Suportado
Suportado
Presto
Suportado
Suportado
Hive2
Não suportado
Suportado
Hive3
Não suportado
Suportado
-
Os mecanismos e sistemas de arquivos de armazenamento suportados para Spark, Hive e Presto são os seguintes.
Mecanismo
OSS
JindoFS
HDFS
Spark2
Suportado
Suportado
Suportado
Presto
Suportado
Suportado
Suportado
Hive2
Suportado
Suportado
Não suportado
Hive3
Suportado
Suportado
Não suportado
Melhorar o desempenho do Spark
-
Ative a aceleração de ORC ou Parquet do JindoTable.
NotaA aceleração de consulta nativa utiliza memória off-heap. Recomendamos adicionar a configuração
--conf spark.executor.memoryOverhead=4gao seu job do Spark para alocar recursos adicionais para a aceleração.Para ler arquivos ORC ou Parquet no Spark, você deve usar a API DataFrame ou o Spark SQL.
-
Configurações globais
-
acesse a página de detalhes do cluster.
Faça login no console do E-MapReduce.
Na barra de navegação superior, selecione uma região e um grupo de recursos conforme necessário.
clique em Clusters.
Na página Clusters, localize o cluster e clique em Details na coluna Actions.
-
Modifique a configuração.
No painel de navegação à esquerda, escolha Services > Spark.
Na página do service Spark, clique em Configure.
Na caixa de pesquisa, localize o parâmetro spark.sql.extensions e defina seu valor como io.delta.sql.DeltaSparkSessionExtension,com.aliyun.emr.sql.JindoTableExtension.
-
salve a configuração.
clique em Save.
Na caixa de diálogo Confirm, insira um Execution Reason e clique em OK.
-
Reinicie o ThriftServer.
No canto superior direito, escolha .
Na caixa de diálogo Cluster Activities, insira um Execution Reason e clique em OK.
Na caixa de diálogo Confirm, clique em OK.
-
-
Configurações no nível do job
execute o spark-shell ou spark-sql, adicione o seguinte parâmetro de inicialização do Spark:
--conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.aliyun.emr.sql.JindoTableExtensionPara mais informações sobre jobs, consulte Configure a Spark Shell job ou Configure a Spark SQL job.
-
Verifique se a aceleração está ativada.
Faça login na UI do Spark History Server.
-
Na página SQL da UI do Spark, visualize o job de execução.
Se
JindoDataSourceV2Scanaparecer, a aceleração estará ativada. Caso contrário, verifique as configurações em Step 1. Na página Details for Query 10, o Directed Acyclic Graph (DAG) mostra o plano de execução. Por exemplo, o JindoDataSourceV2Scan pode verificar 15,6 GB de dados (cerca de 14 bilhões de linhas), que são então filtrados para 2,7 bilhões de linhas. Uma operação final de HashAggregate gera 4.722 linhas, e a consulta total leva 2,3 minutos.
Melhorar o desempenho do Presto
As consultas do Presto têm alta concorrência e a aceleração de consulta nativa utiliza memória off-heap. Portanto, você deve alocar mais de 10 GB de memória para a aceleração de consultas.
O Presto possui um catálogo integrado para aceleração nativa do JindoTable chamado hive-acc. Você pode usar o catálogo hive-acc para ative a aceleração de consulta nativa.
Exemplo:
presto --server emr-header-1:9090 --catalog hive-acc --schema default
A aceleração de consulta nativa para o Presto atualmente não suporta a leitura de tipos de dados complexos, como Map, Struct ou Array.
Melhorar o desempenho do Hive
Se for necessária uma estabilidade rigorosa do job, recomendamos não ative a aceleração de consulta nativa.
Você pode melhorar o desempenho do Hive de uma das seguintes maneiras:
-
Usar o console
No console, acesse a página Configure do service Hive. Localize o parâmetro personalizado hive.jindotable.native.enabled e defina seu valor como true. salve a configuração e reinicie o service para aplicar a alteração. Este método se aplica tanto ao Hive on MR quanto ao Hive on Tez.
-
Usar a CLI
Na CLI, defina
hive.jindotable.native.enabledcomotruepara ative a aceleração de consulta nativa. Como o E-MapReduce V3.35.0 e versões posteriores incluem o plug-in de aceleração Parquet do JindoTable, você pode defina esse parâmetro diretamente.set hive.jindotable.native.enabled=true;
A aceleração de consulta nativa para o Hive atualmente não suporta a leitura de tipos de dados complexos, como Map, Struct ou Array.