Introdução ao HiveQL

O HiveQL, comumente conhecido como HQL, é uma linguagem de consulta semelhante ao SQL para processar grandes pedaços de dados do ambiente Hadoop. Originalmente desenvolvido pelo Facebook por volta de 2007, o Hive se tornou um projeto Apache de código aberto. Consultas de seção com sintaxe semelhante ao SQL se tornaram populares entre os analistas de dados hoje em dia. O HiveQL usando o HDFS para armazenamento e o MapReduce para processamento ajuda a obter insights para usuários de big data com experiência mínima em codificação. Vários outros mecanismos de computação distribuídos, como o Apache Tez e o Apache Spark, podem ser usados ​​com o HiveQL para processamento mais rápido de análises de dados em larga escala. As várias maneiras de usar o HiveQL são: CLI (Command Line Interface), produtos comerciais como Karmasphere, Hue e Qubole de código aberto da Cloudera.

Trabalhando com HiveQL

O Hive fornece um dialeto semelhante ao SQL para manipulação de dados, eliminando a necessidade de gravar tarefas MapReduce de baixo nível para buscar dados (por meio do Mapper) e agregar resultados finais (por meio de módulos redutores).

  • Executando a consulta do Hive

As etapas envolvidas na execução de uma consulta Hive são:

  1. A interface do Hive (por meio de CLI ou UI da Web) envia a consulta ao Driver (que é JDBC, ODBC ou Thrift Server) para compilar, otimizar e executar. Ele verifica a consulta através de um compilador quanto à sintaxe e ao plano de execução.
  2. O compilador envia uma solicitação ao Metastore e recebe os metadados como resposta.
  3. O compilador comunica o plano de execução de volta ao driver, que o envia ao mecanismo de execução.
  4. O mecanismo de execução interage com o Rastreador de trabalhos, que é o Nó de nome para concluir o trabalho.
  5. Paralelamente, o mecanismo de execução também executa a operação de metadados.
  6. O nó de nome realiza o trabalho pelo rastreador de tarefas ou nós de dados.
  7. Resultados que são compartilhados com o mecanismo de execução, que são exibidos na interface por meio do driver.
  • Otimização de consultas

Ajustando o HiveQL para melhor otimização de consultas. Usando os comandos abaixo definidos, podemos substituir as configurações padrão e permitir uma execução mais rápida da consulta.

1 SET hive.execution.engine = tez

Por padrão, o mecanismo de execução é definido como Mapreduce, mas podemos explicitamente defini-lo como tez (somente para o Hadoop 2) ou Spark (para o Hive 1.1. 0 em diante).

2) SET hive.mapred.mode = irrestrito

Isso é para particionamento dinâmico, útil para carregar grandes conjuntos de dados. No entanto, o particionamento estático é definido como padrão, o que acontece no modo "estrito".

3) SET hive.vectorized.execution = true

set hive.vectorized.execution.enabled = true

A execução de consulta vetorizada permite que operações como agregados, filtros ou junções ocorram em lotes de 1024 linhas, em vez de uma única linha por vez.

4) SET hive.auto.convert.join = true

Ao ingressar em um conjunto de dados grande com um conjunto de dados muito pequeno, as junções de mapa são mais eficientes e podem ser configuradas usando o comando acima.

5) SET hive.exec.parallel = true

Os trabalhos MapReduce são executados em paralelo no Hadoop. Às vezes, se as consultas não dependem uma da outra, a execução paralela pode ser favorecida, levando a um melhor gerenciamento de memória.

6 SET hive.exec.compress.output = true

Isso permite que a saída final seja armazenada no HDFS em um formato compactado.

7) SET hive.exec.compress.output = true

Isso permite que a saída final seja armazenada no HDFS em um formato compactado.

Recursos do HiveQL

  1. Sendo uma linguagem de alto nível, as consultas do Hive são implicitamente convertidas em tarefas de redução de mapa ou DAGs complexos (gráficos acíclicos direcionados). Usando a palavra-chave 'Explain' antes da consulta, podemos obter o plano de consulta.
  2. Execução mais rápida de consultas usando o armazenamento de metadados no formato RDMS e replica os dados, facilitando a recuperação em caso de perda.
  3. A indexação de bitmap é feita para acelerar as consultas.
  4. Melhora o desempenho, permitindo o particionamento de dados.
  5. O Hive pode processar diferentes tipos de arquivos compactados, economizando espaço em disco.
  6. Para manipular seqüências de caracteres, números inteiros ou datas, o HiveQL suporta a extensão das funções definidas pelo usuário (UDF), para resolver problemas não suportados pelas UDFs integradas.
  7. Ele fornece uma variedade de APIs adicionais para criar um mecanismo de consulta personalizado.
  8. Diferentes formatos de arquivo são suportados, como Textfile, Sequencefile, ORC (coluna de linha otimizada), RCFile, Avro e Parquet. O formato de arquivo ORC é mais adequado para melhorar o desempenho da consulta, pois armazena dados da maneira mais otimizada, levando a uma execução mais rápida da consulta.
  9. É uma ferramenta eficiente de análise de dados e ETL para grandes conjuntos de dados 10. Fácil de escrever consultas, pois é semelhante ao SQL. Os comandos DDL (linguagem de definição de dados) no hive são usados ​​para especificar e alterar a estrutura do banco de dados ou tabelas no hive. Esses comandos são soltar, criar, truncar, alterar, mostrar ou descrever.

Limitações

  1. As consultas do Hive têm maior latência, pois o Hadoop é um sistema orientado a lotes.
  2. Aninhadas ou subconsultas não são suportadas.
  3. A operação de atualização, exclusão ou inserção não pode ser executada em um nível de registro.
  4. O processamento ou consulta de dados em tempo real não é oferecido pelo Hive Scope of HQL.

Com petabytes de dados, variando de bilhões a trilhões de registros, o HiveQL tem um amplo escopo para profissionais de big data.

Escopo do HiveQL

Abaixo estão as maneiras pelas quais o escopo do HiveQL se amplia e serve melhor ao propósito de analisar dados imensos gerados pelos usuários todos os dias.

Segurança: Juntamente com o processamento de dados grandes, o Hive fornece segurança de dados. Essa tarefa é complexa para o sistema distribuído, pois são necessários vários componentes para se comunicar. O suporte à autorização Kerberos permite autenticação entre cliente e servidor.

Bloqueio: tradicionalmente, o Hive não possui bloqueio em linhas, colunas ou consultas. O Hive pode aproveitar o Apache Zookeeper para bloquear o suporte.

Gerenciamento de fluxo de trabalho : O Apache Oozie é um planejador de fluxo de trabalho para automatizar várias consultas do HiveQL para execução sequencial ou paralela.

Visualização: O notebook Zeppelin é um notebook baseado na Web, que permite análises interativas de dados. Ele suporta o Hive e o Spark para visualização e colaboração de dados.

Conclusão

O HiveQL é amplamente usado nas organizações para resolver casos de uso complexos. Tendo em mente os recursos e as limitações oferecidas pelo idioma, o idioma de consulta do Hive é usado em serviços de telecomunicações, assistência médica, varejo, bancos e financeiro e até mesmo no sistema de avaliação climática do Laboratório de Propulsão de Testes da NASA. A facilidade de escrever SQL como consultas e comandos é responsável por uma aceitação mais ampla. A crescente oportunidade de emprego nesse campo atrai profissionais mais atualizados e de diferentes setores para obter experiência e conhecimento prático sobre o campo.

Artigos recomendados

Este é um guia para o HiveQL. Aqui discutimos a introdução ao HiveQL, otimizando consultas e suas limitações e recursos. Você também pode ler nossos artigos relacionados para saber mais -

  1. O que são os tipos de dados Hive?
  2. Alternativas de colméia | Descubra os recursos
  3. Principais componentes dos comandos do Hive
  4. As 10 principais perguntas da entrevista do Hive

Categoria: