Meu histórico - 4 semanas no mundo do Hadoop. Mexeu um pouco no Hive, Pig e Hadoop usando o Hadoop VM da Cloudera. Leia o artigo do Google sobre Map-Reduce e GFS ( link em PDF ).
Eu entendi aquilo-
Linguagem do Pig O Pig Latin é uma mudança do (como os programadores pensam) o SQL como estilo declarativo de programação e a linguagem de consulta do Hive se assemelha ao SQL.
O porco fica em cima do Hadoop e, em princípio, também pode ficar em cima do Dryad. Posso estar errado, mas o Hive está intimamente ligado ao Hadoop.
Os comandos Pig Latin e Hive são compilados para mapear e reduzir tarefas.
Minha pergunta - Qual é o objetivo de ter os dois quando um (digamos, Porco) pode servir ao propósito. É só porque Pig é evangelizado pelo Yahoo! e Hive pelo Facebook?
fonte
Respostas:
Confira este post de Alan Gates, arquiteto do Pig no Yahoo !, que compara quando usaria um SQL como o Hive, em vez do Pig. Ele faz um caso muito convincente quanto à utilidade de uma linguagem processual como Pig (vs. SQL declarativo) e sua utilidade para designers de fluxo de dados.
fonte
O Hive foi projetado para atrair uma comunidade confortável com o SQL. Sua filosofia era que não precisamos de outra linguagem de script. O Hive suporta mapear e reduzir scripts de transformação no idioma da escolha do usuário (que pode ser incorporado nas cláusulas SQL). É amplamente utilizado no Facebook por analistas confortáveis com SQL e também por programação de mineradores de dados em Python. Os esforços de compatibilidade com SQL no Pig foram abandonados no AFAIK - portanto, a diferença entre os dois projetos é muito clara.
O suporte à sintaxe SQL também significa que é possível integrar-se às ferramentas de BI existentes, como a Microstrategy. O Hive possui um driver ODBC / JDBC (que é um trabalho em andamento) que deve permitir que isso ocorra no futuro próximo. Também está começando a adicionar suporte a índices, o que deve permitir suporte a consultas de detalhamento comuns nesses ambientes.
Finalmente - isso não é pertinente à pergunta diretamente - o Hive é uma estrutura para executar consultas analíticas. Embora seu uso dominante seja o de consultar arquivos simples, não há motivo para que ele não possa consultar outros armazenamentos. Atualmente, o Hive pode ser usado para consultar dados armazenados no Hbase (que é um armazenamento de valores-chave como os encontrados na maioria das RDBMSes), e o projeto HadoopDB usou o Hive para consultar uma camada RDBMS federada.
fonte
Achei isso o mais útil (porém, tem um ano) - http://yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo
Ele fala especificamente sobre Pig vs Hive e quando e onde eles estão empregados no Yahoo. Achei isso muito perspicaz. Algumas notas interessantes:
Em alterações / atualizações incrementais nos conjuntos de dados:
Sobre o uso de outras ferramentas via streaming:
Sobre o uso do Hive para armazenamento de dados:
fonte
Dê uma olhada no Pig Vs Hive Comparison em uma casca de noz de um artigo "dezyre"
O Hive é melhor que o PIG em: Partições, Servidor, Interface da Web e suporte a JDBC / ODBC.
Algumas diferenças:
O Hive é melhor para dados estruturados e o PIG é melhor para dados semiestruturados
O Hive é usado para geração de relatórios e o PIG para programação
O Hive é usado como SQL declarativo e PIG como linguagem processual
O Hive suporta partições e o PIG não
O Hive pode iniciar um servidor opcional baseado em economia e o PIG não pode
O Hive define tabelas com antecedência ( esquema ) + armazena informações do esquema em um banco de dados e o PIG não possui metadados dedicados do banco de dados
O Hive não suporta Avro, mas o PIG sim. EDIT: Hive suporta Avro, especifique o serde como org.apache.hadoop.hive.serde2.avro
O Pig também suporta o recurso COGROUP adicional para realizar junções externas, mas a seção não. Mas o Hive e o PIG podem se unir, ordenar e classificar dinamicamente.
fonte
Acredito que a resposta real para sua pergunta é que eles são / eram projetos independentes e não havia um objetivo coordenado centralmente. Eles estavam em espaços diferentes desde o início e passaram a se sobrepor ao tempo, à medida que os dois projetos se expandem.
Parafraseado do livro Hadoop O'Reilly:
fonte
Você pode obter resultados semelhantes com consultas sobre pig / hive. A principal diferença está na abordagem para entender / escrever / criar consultas.
O Pig tende a criar um fluxo de dados: pequenas etapas nas quais você realiza algum processamento O
Hive fornece uma linguagem semelhante ao SQL para operar em seus dados, portanto, a transformação do RDBMS é muito mais fácil (o Pig pode ser mais fácil para alguém que não teve experiência anterior com SQL)
Também é importante notar que, para o Hive, você pode ter uma interface agradável para trabalhar com esses dados (cera de abelha para HUE ou interface da web do Hive), além de fornecer metastore para obter informações sobre seus dados (esquema etc.), úteis como um informações centrais sobre seus dados.
Eu uso o Hive e o Pig, para consultas diferentes (eu uso aquela em que posso escrever consultas com mais rapidez / facilidade, faço dessa maneira principalmente consultas ad-hoc) - elas podem usar os mesmos dados que uma entrada. Mas atualmente estou fazendo muito do meu trabalho através da cera de abelha.
fonte
O Pig permite carregar dados e código do usuário em qualquer ponto do pipeline. Isso pode ser particularmente importante se os dados forem de fluxo contínuo, por exemplo, dados de satélites ou instrumentos.
O Hive, que é baseado em RDBMS, precisa que os dados sejam primeiro importados (ou carregados) e depois disso possam ser trabalhados. Portanto, se você estivesse usando o Hive no fluxo de dados, teria que continuar preenchendo intervalos (ou arquivos) e usar o hive em cada intervalo preenchido , enquanto usava outros intervalos para continuar armazenando os dados recém-chegados.
Porco também usa avaliação preguiçosa. Permite maior facilidade de programação e pode-se usá-lo para analisar dados de maneiras diferentes com mais liberdade do que em uma linguagem semelhante ao SQL como o Hive. Portanto, se você realmente deseja analisar matrizes ou padrões em alguns dados não estruturados que você possui e deseja fazer cálculos interessantes sobre eles, com o Pig, você pode percorrer uma distância razoável, enquanto com o Hive, precisa de algo mais para brincar com os resultados.
O Pig é mais rápido na importação de dados, mas mais lento na execução real do que em uma linguagem compatível com RDBMS como o Hive.
O Pig é bem adequado para paralelização e, portanto, possivelmente possui uma vantagem para sistemas em que os conjuntos de dados são enormes, ou seja, em sistemas nos quais você se preocupa mais com a taxa de transferência de seus resultados do que com a latência (o tempo para obter qualquer dado específico de resultado).
fonte
Colmeia Vs Porco
O Hive é uma interface SQL que permite usuários experientes em sql ou outras ferramentas como Tableu / Microstrategy / qualquer outra ferramenta ou linguagem que possua interface sql.
O PIG é mais como um pipeline ETL .. com comandos passo a passo, como declarar variáveis, loop, iteração, instruções condicionais etc.
Eu prefiro escrever scripts Pig sobre QL do hive quando quero escrever lógica passo a passo complexa. Quando me sinto confortável escrevendo um único sql para extrair os dados, quero usar o Hive. para o hive, você precisará definir a tabela antes da consulta (como no RDBMS)
O objetivo de ambos é diferente, mas, sob o capô, ambos fazem o mesmo, convertem para mapear programas reduzidos.
fonte
Leia a diferença entre PIG e HIVE neste link.
http://www.aptibook.com/Articles/Pig-and-hive-advantages-disadvantages-features
Todos os aspectos são dados. Se você estiver na confusão de qual escolher, deverá ver essa página da web.
fonte
Pig-latin é estilo de fluxo de dados, é mais adequado para engenheiro de software. Enquanto o sql é mais adequado para analistas que estão acostumados ao sql. Para tarefas complexas, para a seção, você deve criar manualmente uma tabela temporária para armazenar dados intermediários, mas isso não é necessário para o porco.
Pig-latin é adequado para estruturas de dados complicadas (como pequeno gráfico). Há uma estrutura de dados no porco chamada DataBag, que é uma coleção de Tuple. Às vezes, você precisa calcular métricas que envolvem várias tuplas (há um link oculto entre as tuplas, neste caso, eu chamaria isso de gráfico). Nesse caso, é muito fácil escrever um UDF para calcular as métricas que envolvem várias tuplas. Claro que isso poderia ser feito na colméia, mas não é tão conveniente quanto no porco.
Escrever UDF em porco é muito mais fácil do que no Hive, na minha opinião.
O Pig não tem suporte a metadados (ou é opcional, no futuro, poderá integrar o hcatalog). O Hive possui os metadados das tabelas armazenados no banco de dados.
Você pode depurar scripts de pig no ambiente local, mas seria difícil para a seção fazer isso. O motivo é o ponto 3. Você precisa configurar os metadados da seção no ambiente local, consumindo muito tempo.
fonte
Encontrei abaixo um link útil para explorar como e quando usar o HIVE e o PIG.
http://www.hadoopwizard.com/when-to-use-pig-latin-versus-hive-sql/
fonte
Aqui estão alguns links adicionais para usar o Pig ou o Hive.
http://aws.amazon.com/elasticmapreduce/faqs/#hive-8
http://www.larsgeorge.com/2009/10/hive-vs-pig.html
fonte
No link: http://www.aptibook.com/discuss-technical?uid=tech-hive4&question=What-kind-of-datawarehouse-application-is-suitable-for-Hive ?
O Hive não é um banco de dados completo. As restrições e limitações de design do Hadoop e HDFS impõem limites ao que o Hive pode fazer.
O Hive é mais adequado para aplicativos de data warehouse, onde
1) Dados relativamente estáticos são analisados,
2) Não são necessários tempos de resposta rápidos e
3) Quando os dados não estão mudando rapidamente.
O Hive não fornece recursos cruciais necessários para o OLTP, processamento de transações on-line. Está mais perto de ser uma ferramenta OLAP, o Online Analytic Processing. Portanto, o Hive é mais adequado para aplicativos de data warehouse, onde um grande conjunto de dados é mantido e extraído para insights, relatórios etc.
fonte
Em palavras mais simples, o Pig é uma plataforma de alto nível para a criação de programas MapReduce usados com o Hadoop. Usando scripts do pig, processaremos a grande quantidade de dados no formato desejado.
Depois que os dados processados são obtidos, esses dados são mantidos no HDFS para processamento posterior para obter os resultados desejados.
Além dos dados processados armazenados, aplicaremos comandos SQL do HIVE para obter os resultados desejados; internamente, esses comandos hive sql executam programas MAP Reduce.
fonte
Para fornecer uma visão geral de alto nível de ambos, em resumo:
1) Porco é uma álgebra relacional sobre hadoop
2) Hive é um SQL sobre hadoop (um nível acima do Pig)
fonte
O que a HIVE pode fazer e que não é possível no PIG?
O particionamento pode ser feito usando o HIVE, mas não no PIG, é uma maneira de ignorar a saída.
O que o PIG pode fazer e que não é possível no HIVE?
Referenciamento posicional - Mesmo quando você não tem nomes de campo, podemos fazer referência usando a posição como $ 0 - para o primeiro campo, $ 1 para o segundo e assim por diante.
E outra diferença fundamental é que o PIG não precisa de um esquema para escrever os valores, mas o HIVE precisa de um esquema.
Você pode conectar-se a partir de qualquer aplicativo externo ao HIVE usando JDBC e outros, mas não com o PIG.
Nota: Ambas são executadas sobre o HDFS (sistema de arquivos distribuídos hadoop) e as instruções são convertidas em programas Map Reduce.
fonte
Quando estamos usando
Hadoop
no sentido, isso significa que estamos tentando um enorme processamento de dados. O objetivo final do processamento de dados seria gerar conteúdo / relatórios a partir dele.Por isso, consiste internamente em 2 atividades principais:
1) Carregando o processamento de dados
2) Gere conteúdo e use-o para os relatórios / etc.
Carregamento / processamento de dados -> Pig seria útil nele.
Isso ajuda como um ETL (podemos executar operações etl usando scripts pig).
Depois que o resultado é processado, podemos usar o hive para gerar os relatórios com base no resultado processado.
Hive: É construído sobre hdfs para processamento em armazém.
Podemos gerar relatórios ad-hoc facilmente usando o hive a partir do conteúdo processado gerado pelo porco.
fonte
Porco come qualquer coisa! Isso significa que ele pode consumir dados não estruturados.
O Hive requer um esquema.
fonte
O Pig é útil para cargas de trabalho de tipo ETL em geral. Por exemplo, conjunto de transformações que você precisa fazer nos seus dados todos os dias.
O Hive brilha quando você precisa executar consultas ad-hoc ou apenas deseja explorar dados. Às vezes, pode atuar como interface para a sua camada de visualização (Tableau / Qlikview).
Ambos são essenciais e servem a propósitos diferentes.
fonte