Usando o Apache Hive

O Apache Hive é um sistema de data warehouse construído sobre o Apache Hadoop e facilita a leitura, a gravação e o gerenciamento de grandes conjuntos de dados que residem no armazenamento distribuído usando SQL.

Propriedades de Configuração do Hive

Propriedades de configuração do Hive incluídas no Big Data Service 3.1.1 ou posterior.

Configuração Propriedade Descrição
hive-env hive_metastore_hadoop_opts Opções do Hadoop para o Hive Metastore
hive_metastore_remotejmx_hadoop_opts Opções do Hadoop para o Hive Metastore se o JXM remoto estiver ativado
hive_server_hadoop_opts Opções do Hadoop para o Servidor Hive
hive_server_remotejmx_hadoop_opts Opções do Hadoop para o Servidor Hive se o JXM remoto estiver ativado
hive_secure_hadoop_opts Opções do Hadoop se a segurança estiver ativada
hive_classpath_ext Caminhos que contêm bibliotecas Hadoop para Hive
hive-interactive-env hive_interactive_hadoop_opts Opções do Hadoop para Hive Interactive
hive_interactive_secure_hadoop_opts Opções do Hadoop para o Hive Interactive se a segurança estiver ativada

Ajuste de Desempenho

Esta é uma diretriz geral ao executar consultas em conjuntos de dados menores. O recurso FetchTask oferece os seguintes benefícios nos cenários/casos de uso mencionados.

Ao trabalhar com conjuntos de dados menores, você se beneficia do recurso FetchTask em cenários ou casos de uso específicos ao executar consultas. O recurso pode ser controlado usando o parâmetro "hive.fetch.task.conversion", que é definido como "more" por padrão. FetchTask é uma tarefa eficiente que acessa diretamente o arquivo para fornecer resultados, sem iniciar um job MapReduce para a consulta recebida. O recurso é aplicado ao selecionar colunas específicas com um limite, sujeito a requisitos adicionais, como uma única origem de dados (uma tabela ou partição), nenhuma subconsulta, nenhuma agregação ou distinto e não se aplicando a views ou junções. Portanto, a execução de consultas como "select col1 as alias1, col2 from table where partitionkey='somePartitionValue'", "select id from t limit 1;", or "select col1 as alias1, col2 from table where partitionkey='somePartitionValue'" e FetchTask é aproveitada. No entanto, se você definir "hive.fetch.task.conversion" como mínimo, FetchTask será aplicado ao executar "select *" com um limite.

Ao lidar com conjuntos de dados maiores e ativar FetchTask, ajuste o tamanho do heap do servidor e do cliente com base no tamanho do conjunto de dados ao acionar consultas selecionadas de ferramentas de BI, Beeline, Hue e assim por diante. Como alternativa, para eliminar gargalos de memória do HiveServer, defina "hive.fetch.task.conversion" como Nenhum para desativar o recurso FetchTask e executar jobs MapReduce.

Falha na Consulta da Tabela de Exclusão do Hive

A consulta da tabela de exclusão do Hive falha com o erro DELETE from table1.

DELETE from table1;

FAILED: SemanticException [Error 10294]: Attempt to do update or delete using transaction manager that does not support these operations.

O suporte à exclusão não está disponível para tabelas não transacionais ou não ácidas no Hive. Para excluir uma tabela, você deve criar uma tabela transacional.

Por exemplo:

CREATE TABLE emp12(id int,age int)TBLPROPERTIES ('transactional'='true');