O JindoTable usa um mecanismo nativo para acelerar consultas em arquivos ORC ou Parquet no Spark, Hive ou Presto. Este tópico explica como ativar a aceleração nativa de consultas para melhorar o desempenho do Spark, Hive e Presto.
Pré-requisitos
Você deve ter um cluster E-MapReduce com arquivos ORC ou Parquet armazenados no JindoFS ou OSS. Para mais informações, consulte Crie um cluster.
Limitações
A aceleração não suporta arquivos do tipo binário.
Tabelas particionadas não são suportadas se os valores das colunas de chave de partição estiverem armazenados nos arquivos de dados.
Clusters E-MapReduce da versão EMR-5.X e posteriores não são suportados.
O uso de
spark.read.schema(userDefinedSchema)não é suportado.Tipos de data são suportados apenas no intervalo de 1400-01-01 a 9999-12-31.
Tabelas com nomes de colunas diferenciados apenas por maiúsculas e minúsculas (por exemplo,
NAMEename) não são suportadas. A aceleração nativa de consultas trata os nomes das colunas sem distinção entre maiúsculas e minúsculas.-
Os mecanismos e formatos de armazenamento compatíveis com Spark, Hive e Presto são:
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 compatíveis com Spark, Hive e Presto são:
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 ORC ou Parquet do JindoTable.
NotaA aceleração nativa de consultas usa memória off-heap. Adicione a configuração
--conf spark.executor.memoryOverhead=4gao job Spark para alocar recursos adicionais à aceleração.Para ler arquivos ORC ou Parquet no Spark, use a API DataFrame ou Spark SQL.
-
Configurações globais
-
Acesse a página de detalhes do cluster.
Faça login no console E-MapReduce.
Na barra de navegação superior, selecione uma região e um grupo de recursos conforme necessário.
Clique na aba 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 serviço Spark, clique na aba 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
Ao executar 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 um job Spark Shell ou Configure um job Spark SQL.
-
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 executado.
Se
JindoDataSourceV2Scanaparecer, a aceleração estará ativada. Caso contrário, verifique as configurações na Etapa 1. Na página Details for Query 10, o Grafo Acíclico Direcionado (DAG) exibe o plano de execução. Por exemplo, o JindoDataSourceV2Scan pode processar 15,6 GB de dados (cerca de 14 bilhões de linhas), filtrando-os posteriormente para 2,7 bilhões de linhas. Uma operação final HashAggregate gera 4.722 linhas, e a consulta total leva 2,3 minutos.
-
Pelo console
No console, acesse a página Configure do serviço Hive. Localize o parâmetro personalizado hive.jindotable.native.enabled e defina seu valor como true. Salve a configuração e reinicie o serviço para aplicar a alteração. Este método aplica-se tanto ao Hive on MR quanto ao Hive on Tez.
-
Pela CLI
Na CLI, defina
hive.jindotable.native.enabledcomotruepara ativar a aceleração nativa de consultas. Como o E-MapReduce V3.35.0 e versões posteriores incluem o plug-in de aceleração Parquet do JindoTable, defina esse parâmetro diretamente.set hive.jindotable.native.enabled=true;
Melhorar o desempenho do Presto
ImportanteAs consultas do Presto têm alta concorrência e a aceleração nativa usa memória off-heap. Portanto, aloque 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. Use o catálogohive-accpara ativar a aceleração nativa de consultas.Exemplo:
presto --server emr-header-1:9090 --catalog hive-acc --schema defaultNotaAtualmente, a aceleração nativa de consultas para Presto não suporta a leitura de tipos de dados complexos, como Map, Struct ou Array.
Melhorar o desempenho do Hive
ImportanteSe for necessária estabilidade rigorosa do job, não ative a aceleração nativa de consultas.
Melhore o desempenho do Hive de uma das seguintes maneiras:
NotaAtualmente, a aceleração nativa de consultas para Hive não suporta a leitura de tipos de dados complexos, como Map, Struct ou Array.