Image for post
Image for post
Photo by Boba Jaglicic on Unsplash

Apache Hive na veia, P@rr#?!

Descubra o Apache Hive!! :)

Cada vez mais temos de lidar com grandes Volumes de dados que são criados e precisam ser utilizados em uma Velocidade inacreditável, tendo uma Variação enorme, quase que impossível para um ser humano acompanhar, se preocupar com sua Veracidade e conseguir agregar Valor ao negócio de forma eficaz. (Os 5 V do Big data)

Para lidar com isso surgiu termo “Big data” e várias soluções para lidar com esses problemas em diferentes cenários como é o caso do Apache Hive.

Segundo a IBM, “Apache Hive é um software de data warehouse de código aberto(Open source) para leitura, gravação e gerenciamento de grandes arquivos de conjuntos de dados que são armazenados diretamente no Sistema de Arquivos Distribuídos como Apache Hadoop (HDFS) ou em outros sistemas de armazenamento de dados, como Apache HBase. O Hive permite que os desenvolvedores SQL gravem instruções Hive Query Language (HQL) que são semelhantes às instruções SQL padrão para consulta e análise de dados. Ele foi projetado para tornar a programação do MapReduce mais fácil, porque você não precisa saber e escrever um código Java extenso. Em vez disso, você pode escrever consultas de forma mais simples em HQL, e o Hive pode criar o mapa e reduzir as funções.”

Como em qualquer sistema de gerenciamento de banco de dados(SGBD) atualmente, pode ser acessado via comandos em uma interface de linha de comando, via conexão JDBC, ODBC ou a partir de algum driver/conector customizado.

Além de ser baseado no SQL que nós já estamos acostumados a ver em outros bancos de dados, integra também em sua linguagem de consulta(HIVEQL) funções do Hadoop, com isso, temos a possibilidade de usar MapReduce, por exemplo.

Buscando performance com o HiveQL podemos utilizar de arquivos no formato RCFile, AVRO, ORC ou Apache Parquet, habilitar a Vetorizarão, Serializar ou Deserializar os dados, identificar a Carga de trabalho nas querys, utilizar Skew Joins, conexões concorrentes ou cursores e vale-se de Tez-Execution Engine. #Essa são apenas algumas alternativas, exite muito mais…

Por ser uma solução baseada no Hadoop é muito utilizada integrada em outras soluções desse ecossistema como o Apache Spark, sendo muita vezes, parte de um meio para implementar a estratégia de extração(Extract), transformação(Transform) e carregamento(Load) de dados.

Muita das vezes, os usuários querem utilizar os dados que estão sendo processados no Spark e grava-los no Hive ou vice versa, para isso podemos configurar o Spark ou na hora de criar um nova seção estabelecer essa conexão.

Muitas pessoas não gostam de vale-se do SparkSQL por causa de sua performance em manipular os dados e por ser utilizados geralmente em conjunto de DataFrames, para tentar otimizar isso podemos fazer o uso do PyArrow.

O Spark usa da Java Virtual Machine(JVM) e com isso temos o vilão Garbage Collection(gerenciador de alocação e desalocação de recursos) e seu comportamento indesejado quando submetido a múltiplos processadores e grandes quantidades de dados. Nas versões mais novas do Java, temos diferentes implementações que podem ser utilizadas durante a execução de código no Spark visando performance.

OBS: Antes de sair utilizando, verifique a versão dos softwares e compatibilidade entre eles!

Para utilizar o Hive com Python, além da possibilidade de fazer uma conexão JDBC, podemos usar a biblioteca PyHive, com isso além de simplificamos ainda mais o uso do Hive, temos opção de aplicar cursores para trabalhar com grandes volumes de dados ou utilizar a interface do Presto(ou PrestoDB).

OBS: Verifique se em seu sistema operacional tem as bibliotecas necessárias para fazer a conexão com o Hive!

Com a chegada das iniciativas de DataOps na área de dados, muitas soluções começarão a ganhar versões para serem utilizadas no ambiente de contêineres. Esse tipo de implementação abstrai muito da necessidade do gerenciamento de configurações e pode ser utilizados para montar infraestruturas de maneira rápida, fácil e eficaz.

#Imagine a dificuldade de configurar 1000 clusters com o Hive, com o Terraform, docker e Ansible vc pode conseguir, sera? ….

Alguns exemplo de implementações do Hive com Docker:

Obrigado por sua leitura!:)

Written by

Estou compartilhando minha opinião e o pouco que sei de forma eventual por aqui. https://www.linkedin.com/in/josueluzardo

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store