Big Data Series – Processando Dados com Pig no HDInsight

Posted on novembro 7, 2017

1


 

Introdução

 

A explosão dos dados semi e não-estruturados graças ao surgimento do que conhecemos como IoT, impacta todas as empresas que necessitam dos dados para tomar decisões, realizar análises, atrair clientes, mitigar riscos, diminuir despesas assim como atender a demandas de negócio em sua área.

A realidade é, a maioria dos dados atualmente são gerados de forma não-estruturada, isso significa que cada vez mais precisaremos de novas tecnologias para lidar com a ingestão, qualidade e processamento e a expectativa é de que em 2020 tenhamos algo em volta de 13 exabytes de dados.

 

Pig Latin

 

O Pig Latin é considerado uma plataforma para análise, processamento, limpeza e análise de dados e o mesmo faz parte do ecossistema do Hadoop que é da Apache Framework, além disso, para nós administradores de banco de dados e desenvolvedores a linguagem permite o uso de join, distinct, union entre outros comandos que usamos em nosso dia a dia.

A linguagem Pig é de alto-nível criada para executar jobs nas engines MapReduce, Tez ou Apache Spark, com isso provendo a possibilidade de se usar a linguagem para abstrair a programação na linguagem Java, originalmente criada para uso com MapReduce jobs.

Acessando o mundo de Big Data com clusters de Hadoop ou Spark, você poderá trabalhar com Pig, normalmente essa linguagem é utilizada para resolver diferentes propósitos do que um banco de dados relacional, seu principal objetivo é a aplicabilidade de Big Data para o processo de ETL [Extract, Transform and Load] que normalmente processa e organiza dados semi ou não-estruturados.

 
Vantagens

– Tempo de desenvolvimento e aprendizado curto, comparado com programação em MapReduce jobs, grande similaridade com SQL

– Programação Procedural

– Possibilidade de se escrever UDFs em Python

– Schema On-Read

– Criada para se trabalhar com dados não estruturados e grandes datasets, a grande vantagem aqui é quando se trata de limpeza dos dados.

Data Is The New OIL!

 

 

Dado é o novo combustível nessa nova era digital, a cada segundo empresas competem para conseguir extrair mais rapidamente informações, insights, processar e cruzar dados para atrair cada vez mais o cliente para sua empresa.

Com esse novo horizonte, Hadoop e Spark possibilitam o processamento paralelo das informações em clusters de computadores, somente para termos uma ideia, o Yahoo possui mais de 42 mil nós com milhares de petabytes de armazenamento.

 

A Nova Era dos Profissionais de ETL

 

Mais cedo ou mais tarde nós que trabalhamos com dados iremos ter que ir ao zoológico, nesse caso conhecer o ecossistema do Apache Hadoop – http://hadoop.apache.org e após colocar a primeira mão, você irá perceber quantas vantagens esse novo mundo pode te oferecer.

Profissionais que trabalharam com ETL passam a usar o Hadoop para criar um processo mais ágil e rápido dentro desse novo ecossistema, expandir as possibilidades e conhecer linguagens como Pig Latin e Hive para processos complexos de ETL passam a ser parte indispensável de um novo projeto.

Não somente processar, mas sim processar os dados com uma eficiência já mais vista, principalmente porque a quantidade de dados semi e não-estruturados tem crescido exponencialmente e banco de dados relacionais passam a ser limitados quando pensamos em processamento paralelo em grande escala para esse tipo de propósito.

 

 

HDInsight

 

 

 

 

 

 

Sabemos que o HDInsight é a oferta do Microsoft Azure para diversos tipos de clusters com HBase, Hadoop, Spark, Storm sendo assim uma vez com um cluster de Hadoop provisionado você passa a ter acesso a linguagem de programação Pig, aqui você irá entender as formas de acesso de um cluster do HDInsight.

1 – Upload dos Dados no Blog Storage do Azure

2 – Entendendo e Visualizando Dados de Automóvel


3 – Usando Pig para Carregar os Dados

Source = LOAD ‘/tmp/autos.csv’ USING PigStorage(‘,’) AS (dateCrawled:chararray, name:chararray, seller: chararray, offerType:chararray, price:float, abtest:chararray, vehicleType:chararray, yearOfRegistration:int, gearbox:chararray, powerPS:int, model:chararray, kilometer:int, monthOfRegistration:int, fuelType:chararray, brand:chararray, notRepairedDamage:chararray, dateCreated:chararray, nrOfPictures:int, postalCode:int, lastSeen:chararray;

4 – Filtrando, Agrupando e Ordenando Valores no Pig

Source = LOAD ‘/tmp/autos.csv’ USING PigStorage(‘,’) AS (dateCrawled:chararray, name:chararray, seller: chararray, offerType:chararray, price:float, abtest:chararray, vehicleType:chararray, yearOfRegistration:int, gearbox:chararray, powerPS:int, model:chararray, kilometer:int, monthOfRegistration:int, fuelType:chararray, brand:chararray, notRepairedDamage:chararray, dateCreated:chararray, nrOfPictures:int, postalCode:int, lastSeen:chararray);
Data = FILTER Source BY yearOfRegistration IS NOT NULL;
BrandGrouping = GROUP Data BY brand;
GroupedBrand = FOREACH BrandGrouping GENERATE group AS brand, COUNT(Data.name) AS TotalByBrand;
OrderBrand = ORDER GroupedBrand BY TotalByBrand DESC;

 

5 – Armazenando ou Mostrando os Valores Processados

STORE OrderBrand INTO ‘/tmp/autos_resultset_new’ USING PigStorage(‘ ‘) ;
DUMP OrderBrand;

 

6 – Resultado do Processamento Realizado com Pig


Documentação do Pig

https://en.wikipedia.org/wiki/Pig_(programming_tool)
https://pig.apache.org