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:
- 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.
- O compilador envia uma solicitação ao Metastore e recebe os metadados como resposta.
- O compilador comunica o plano de execução de volta ao driver, que o envia ao mecanismo de execução.
- O mecanismo de execução interage com o Rastreador de trabalhos, que é o Nó de nome para concluir o trabalho.
- Paralelamente, o mecanismo de execução também executa a operação de metadados.
- O nó de nome realiza o trabalho pelo rastreador de tarefas ou nós de dados.
- 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
- 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.
- 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.
- A indexação de bitmap é feita para acelerar as consultas.
- Melhora o desempenho, permitindo o particionamento de dados.
- O Hive pode processar diferentes tipos de arquivos compactados, economizando espaço em disco.
- 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.
- Ele fornece uma variedade de APIs adicionais para criar um mecanismo de consulta personalizado.
- 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.
- É 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
- As consultas do Hive têm maior latência, pois o Hadoop é um sistema orientado a lotes.
- Aninhadas ou subconsultas não são suportadas.
- A operação de atualização, exclusão ou inserção não pode ser executada em um nível de registro.
- 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 -
- O que são os tipos de dados Hive?
- Alternativas de colméia | Descubra os recursos
- Principais componentes dos comandos do Hive
- As 10 principais perguntas da entrevista do Hive