Executar consultas do Apache Hive usando as ferramentas do Data Lake para Visual Studio
Saiba como usar as ferramentas do Data Lake para Visual Studio para consultar o Apache Hive. As ferramentas de Data Lake permitem que você facilmente crie, envie e monitore consultas de Hive para Apache Hadoop no Azure HDInsight.
Pré-requisitos
Um cluster do Apache Hadoop no HDInsight. Para saber como criar esse item, veja Criar o cluster do Apache Hadoop no Azure HDInsight usando o modelo do Resource Manager.
Do Visual Studio. As etapas deste artigo usam o Visual Studio 2019.
Ferramentas do HDInsight para Visual Studio ou ferramentas do Azure Data Lake para Visual Studio. Para saber como instalar e configurar as ferramentas, veja Instalar o Data Lake Tools para Visual Studio.
Executar consultas Apache Hive usando o Visual Studio
Você tem duas opções para criar e executar consultas do Hive:
- Criar consultas ad hoc.
- Criar um aplicativo Hive.
Criar uma consulta de Hive ad hoc
As consultas ad hoc podem ser executadas no modo de Lote ou Interativo.
Inicie o Visual Studio e selecione Continuar sem código.
Em Gerenciador de Servidores, clique com o botão direito do mouse em Azure, selecione Conectar à Assinatura do Microsoft Azure... e conclua o processo de logon.
Expanda HDInsight, clique com o botão direito do mouse no cluster em que você deseja executar a consulta e selecione Escrever uma consulta Hive.
Execute esta consulta do Hive:
SELECT * FROM hivesampletable;
Selecione Executar. O modo de execução usa como padrão Interativo.
Para executar a mesma consulta no modo de Lote, alterne a lista suspensa de Interativo para Lote. O botão de execução alterna de Executar para Enviar.
O editor do Hive é compatível com o IntelliSense. Agora as Ferramentas do Data Lake para Visual Studio dão suporte à obtenção de metadados remotos quando você edita o script do Hive. Por exemplo, se você digitar
SELECT * FROM
, o IntelliSense listará todos os nomes de tabela sugeridos. Quando um nome de tabela for especificado, o IntelliSense listará os nomes de coluna. As ferramentas dão suporte a quase todas as instruções DML Hive, subconsultas e UDFs internos. O IntelliSense sugere apenas os metadados dos clusters selecionados na Barra de Ferramentas do HDInsight.Na barra de ferramentas de consulta (a área abaixo da guia consulta e acima do texto da consulta), selecione Enviar ou selecione a seta suspensa ao lado de Enviar e escolha Avançado na lista suspensa. Se você selecionar a última opção,
Se você selecionar a opção de envio avançado, configure Nome do Trabalho, Argumentos, Configurações Adicionais e Diretório de Status na caixa de diálogo Enviar Script. Em seguida, selecione Enviar.
Criar um aplicativo Hive
Para realizar uma consulta do Hive criando um aplicativo Hive, siga estas etapas:
Abra o Visual Studio.
Na janela Iniciar, selecione Criar projeto.
Na janela Criar um novo projeto, na caixa Pesquisar modelos, insira Hive. Em seguida, escolha Aplicativo Hive e selecione Avançar.
Na janela Configurar novo projeto, insira um Nome de projeto, selecione ou crie uma Localização do projeto e selecione Criar.
Abra o arquivo Script.hql criado com esse projeto e cole as seguintes instruções HiveQL:
set hive.execution.engine=tez; DROP TABLE log4jLogs; CREATE EXTERNAL TABLE log4j Logs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION '/example/data/'; SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
Essas instruções executam as seguintes ações:
DROP TABLE
: excluirá a tabela se ela existir.CREATE EXTERNAL TABLE
: cria uma nova tabela 'externa' no Hive. Tabelas externas só armazenam a definição da tabela no Hive. (Os dados são mantidos no local original).Observação
As tabelas externas devem ser usadas quando você esperar que os dados subjacentes sejam atualizados por uma fonte externa, como um trabalho MapReduce ou um serviço do Azure.
Remover uma tabela externa não exclui os dados, somente a definição de tabela.
ROW FORMAT
: informa ao Hive como os dados são formatados. Nesse caso, os campos em cada log são separados por um espaço.STORED AS TEXTFILE LOCATION
: informa ao Hive o local em que os dados são armazenados no diretório exemplo/dados e que eles estão armazenados como texto.SELECT
: seleciona uma contagem de todas as linhas, nas quais a colunat4
contém o valor[ERROR]
. Essa instrução retorna um valor de3
, já que três linhas contêm esse valor.INPUT__FILE__NAME LIKE '%.log'
: informa ao Hive que só devemos retornar dados de arquivos que terminam em .log. Essa cláusula restringe a pesquisa para o arquivo sample.log que contém os dados.
Na barra de ferramentas do arquivo de consulta (que se parece com a barra de ferramentas de consulta ad hoc), selecione o cluster do HDInsight que você quer usar para esta consulta. Em seguida, mude Interativo para Lote (se necessário) e selecione Enviar para executar as instruções como trabalho do Hive.
O Resumo do Trabalho do Hive aparecerá e exibirá informações sobre o trabalho em execução. Use o link Atualizar para atualizar as informações do trabalho, até o Status do Trabalho ser alterado para Concluído.
Use o link Saída do Trabalho para exibir a saída desse trabalho. Ele exibe
[ERROR] 3
, que é o valor retornado por essa consulta.
Exemplo adicional
O exemplo a seguir depende da tabela log4jLogs
criada no procedimento anterior, Criar um aplicativo do Hive.
Em Gerenciador de Servidores, clique com o botão direito do mouse no cluster e selecione Escrever uma Consulta do Hive.
Execute esta consulta do Hive:
set hive.execution.engine=tez; CREATE TABLE IF NOT EXISTS errorLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) STORED AS ORC; INSERT OVERWRITE TABLE errorLogs SELECT t1, t2, t3, t4, t5, t6, t7 FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log';
Essas instruções executam as seguintes ações:
CREATE TABLE IF NOT EXISTS
: cria uma tabela, se ainda não houver. Como a palavra-chaveEXTERNAL
não é usada, essa instrução cria uma tabela interna. As tabelas internas são armazenadas no data warehouse do Hive e gerenciadas por ele.Observação
Ao contrário das tabelas
EXTERNAL
, o descarte de uma tabela interna excluirá também os dados subjacentes.STORED AS ORC
: armazena os dados no formato colunar de linha otimizado (ORC). Esse é um formato altamente otimizado e eficiente para o armazenamento de dados do Hive.INSERT OVERWRITE ... SELECT
: seleciona linhas da tabelalog4jLogs
que contêm[ERROR]
e, então, insere os dados na tabelaerrorLogs
.
Altere Interativo para Lote, se necessário, e selecione Enviar.
Para verificar se o trabalho criou a tabela, vá para Gerenciador de Servidores e expanda Azure>HDInsight. Expanda o cluster do HDInsight e, em seguida, expanda os Bancos de Dados do Hive>padrão. As tabelas errorLogs e Log4jLogs são listadas.
Próximas etapas
Como você pode ver, as ferramentas do HDInsight para o Visual Studio fornecem uma maneira fácil de trabalhar com as consultas do Hive no HDInsight.
Para obter mais informações sobre o Hive no HDInsight, veja O que é o Apache Hive e o HiveQL no Azure HDInsight?
Para conhecer outras maneiras de trabalhar com o Hadoop no HDInsight, veja Usar o MapReduce no Apache Hadoop no HDInsight
Para obter mais informações sobre as ferramentas do HDInsight para Visual Studio, confira Usar ferramentas de Data Lake para o Visual Studio para se conectar ao Azure HDInsight e executar consultas do Apache Hive