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

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.

  1. Inicie o Visual Studio e selecione Continuar sem código.

  2. 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.

  3. 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.

  4. Execute esta consulta do Hive:

    SELECT * FROM hivesampletable;
    
  5. Selecione Executar. O modo de execução usa como padrão Interativo.

    Executar consulta do Hive interativa, Visual Studio.

  6. 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.

    Enviar consulta do Hive em lote, Visual Studio.

    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.

  7. 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,

  8. 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.

    Caixa de diálogo Enviar Script, consulta do Hive do HDInsight Hadoop.

Criar um aplicativo Hive

Para realizar uma consulta do Hive criando um aplicativo Hive, siga estas etapas:

  1. Abra o Visual Studio.

  2. Na janela Iniciar, selecione Criar projeto.

  3. Na janela Criar um novo projeto, na caixa Pesquisar modelos, insira Hive. Em seguida, escolha Aplicativo Hive e selecione Avançar.

  4. Na janela Configurar novo projeto, insira um Nome de projeto, selecione ou crie uma Localização do projeto e selecione Criar.

  5. 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 coluna t4 contém o valor [ERROR]. Essa instrução retorna um valor de 3, 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.

  6. 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.

    Resumo do trabalho do Hive concluído, aplicativo Hive, Visual Studio.

  7. 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.

  1. Em Gerenciador de Servidores, clique com o botão direito do mouse no cluster e selecione Escrever uma Consulta do Hive.

  2. 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-chave EXTERNAL 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 tabela log4jLogs que contêm [ERROR] e, então, insere os dados na tabela errorLogs.

  3. Altere Interativo para Lote, se necessário, e selecione Enviar.

  4. 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.