Apache Pig - Visão geral
O que é Apache Pig?
Apache Pig é uma abstração do MapReduce. É uma ferramenta / plataforma usada para analisar grandes conjuntos de dados, representando-os como fluxos de dados. O porco é geralmente usado comHadoop; podemos realizar todas as operações de manipulação de dados no Hadoop usando o Apache Pig.
Para escrever programas de análise de dados, o Pig fornece uma linguagem de alto nível conhecida como Pig Latin. Essa linguagem fornece vários operadores, usando os quais os programadores podem desenvolver suas próprias funções de leitura, gravação e processamento de dados.
Para analisar dados usando Apache Pig, os programadores precisam escrever scripts usando a linguagem Pig Latin. Todos esses scripts são convertidos internamente em tarefas Map e Reduce. Apache Pig tem um componente conhecido comoPig Engine que aceita os scripts Pig Latin como entrada e os converte em tarefas MapReduce.
Por que precisamos do Apache Pig?
Os programadores que não são tão bons em Java normalmente costumavam ter dificuldade em trabalhar com o Hadoop, especialmente ao executar qualquer tarefa MapReduce. O Apache Pig é uma benção para todos esses programadores.
Usando Pig Latin, os programadores podem realizar tarefas MapReduce facilmente sem ter que digitar códigos complexos em Java.
Apache Pig usa multi-query approach, reduzindo assim o comprimento dos códigos. Por exemplo, uma operação que exigiria que você digite 200 linhas de código (LoC) em Java pode ser facilmente feita digitando apenas 10 LoC no Apache Pig. Em última análise, o Apache Pig reduz o tempo de desenvolvimento em quase 16 vezes.
Pig Latin é SQL-like language e é fácil aprender Apache Pig quando você está familiarizado com SQL.
O Apache Pig fornece muitos operadores integrados para suportar operações de dados como junções, filtros, ordenação etc. Além disso, ele também fornece tipos de dados aninhados como tuplas, bolsas e mapas que estão faltando no MapReduce.
Características do porco
O Apache Pig vem com os seguintes recursos -
Rich set of operators - Ele fornece muitos operadores para realizar operações como junção, classificação, arquivador, etc.
Ease of programming - Pig Latin é semelhante ao SQL e é fácil escrever um script Pig se você for bom em SQL.
Optimization opportunities - As tarefas no Apache Pig otimizam sua execução automaticamente, portanto, os programadores precisam se concentrar apenas na semântica da linguagem.
Extensibility - Usando os operadores existentes, os usuários podem desenvolver suas próprias funções para ler, processar e gravar dados.
UDF’s - Pig fornece a facilidade de criar User-defined Functions em outras linguagens de programação, como Java e invocá-los ou incorporá-los em scripts Pig.
Handles all kinds of data- Apache Pig analisa todos os tipos de dados, tanto estruturados quanto não estruturados. Ele armazena os resultados em HDFS.
Apache Pig Vs MapReduce
Listadas abaixo estão as principais diferenças entre Apache Pig e MapReduce.
Porco apache | MapReduce |
---|---|
Apache Pig é uma linguagem de fluxo de dados. | MapReduce é um paradigma de processamento de dados. |
É uma linguagem de alto nível. | MapReduce é de baixo nível e rígido. |
Realizar uma operação Join no Apache Pig é muito simples. | É muito difícil no MapReduce realizar uma operação de junção entre conjuntos de dados. |
Qualquer programador novato com um conhecimento básico de SQL pode trabalhar convenientemente com o Apache Pig. | A exposição ao Java é obrigatória para trabalhar com MapReduce. |
O Apache Pig usa uma abordagem de várias consultas, reduzindo em grande parte o comprimento dos códigos. | O MapReduce exigirá quase 20 vezes mais o número de linhas para realizar a mesma tarefa. |
Não há necessidade de compilação. Na execução, cada operador Apache Pig é convertido internamente em um trabalho MapReduce. | Os trabalhos de MapReduce têm um longo processo de compilação. |
Apache Pig Vs SQL
Listadas abaixo estão as principais diferenças entre o Apache Pig e o SQL.
Porco | SQL |
---|---|
Pig Latin é um procedural língua. | SQL é um declarative língua. |
Em Apache Pig, schemaé opcional. Podemos armazenar dados sem criar um esquema (os valores são armazenados como $ 01, $ 02 etc.) | O esquema é obrigatório no SQL. |
O modelo de dados no Apache Pig é nested relational. | O modelo de dados usado em SQL is flat relational. |
Apache Pig oferece oportunidades limitadas para Query optimization. | Há mais oportunidades para otimização de consulta em SQL. |
Além das diferenças acima, Apache Pig Latin -
- Permite divisões no pipeline.
- Permite que os desenvolvedores armazenem dados em qualquer lugar do pipeline.
- Declara planos de execução.
- Fornece operadores para executar funções ETL (Extrair, Transformar e Carregar).
Apache Pig Vs Hive
Tanto o Apache Pig quanto o Hive são usados para criar tarefas MapReduce. E, em alguns casos, o Hive opera no HDFS de maneira semelhante ao Apache Pig. Na tabela a seguir, listamos alguns pontos significativos que diferenciam o Apache Pig do Hive.
Porco apache | Colmeia |
---|---|
Apache Pig usa uma linguagem chamada Pig Latin. Foi originalmente criado emYahoo. | O Hive usa uma linguagem chamada HiveQL. Foi originalmente criado emFacebook. |
Pig Latin é uma linguagem de fluxo de dados. | HiveQL é uma linguagem de processamento de consulta. |
Pig Latin é uma linguagem procedural e se encaixa no paradigma pipeline. | HiveQL é uma linguagem declarativa. |
O Apache Pig pode lidar com dados estruturados, não estruturados e semiestruturados. | O Hive é principalmente para dados estruturados. |
Aplicações do Apache Pig
O Apache Pig é geralmente usado por cientistas de dados para realizar tarefas que envolvem processamento ad-hoc e prototipagem rápida. Apache Pig é usado -
- Para processar grandes fontes de dados, como logs da web.
- Para realizar o processamento de dados para plataformas de pesquisa.
- Para processar cargas de dados sensíveis ao tempo.
Apache Pig - História
No 2006, Apache Pig foi desenvolvido como um projeto de pesquisa no Yahoo, especialmente para criar e executar jobs MapReduce em cada conjunto de dados. No2007, Apache Pig foi de código aberto via incubadora Apache. No2008, o primeiro lançamento do Apache Pig foi lançado. No2010, Apache Pig graduou-se como um projeto de nível superior do Apache.