Diferença entre porco e Colmeia? Porquê as duas coisas? [fechado]

O meu passado tinha 4 semanas no mundo Hadoop. Um pouco na colmeia, porco e Hadoop usando o Hadoop VM de Cloudera. Li o artigo do Google sobre Map-Reduce e GFS (PDF link).

eu entendo que ...

  • linguagem de Porco O latim é uma mudança de (combina com a maneira como os programadores pensam) SQL estilo declarativo de programação e linguagem de consulta da colmeia parece SQL.

  • O Porco senta-se em cima de Hadoop e em princípio também pode sentar-se em topo de Driade. Posso estar errado, mas o Hive está. estreitamente ligado ao Hadoop.

  • tanto os comandos Pig Latin como Hive compila para mapear e reduzir empregos.

a minha pergunta-Qual é o objectivo de ter ambos quando um (digamos porco) pode servir o propósito. É só porque o porco é evangelizado pelo Yahoo! e a colmeia pelo Facebook?

Author: Sheena, 2010-07-28

19 answers

Olha para este post de Alan Gates, Arquitecto de porcos em Yahoo!, que se compara quando usaria um SQL como Colmeia em vez de porco. Ele faz um caso muito convincente sobre a utilidade de uma linguagem processual como Pig (vs. declarative SQL) e sua utilidade para designers dataflow.
 145
Author: Jakob Homan, 2016-12-21 23:40:23
A colmeia foi concebida para apelar a uma comunidade confortável com SQL. Sua filosofia era que não precisamos de mais uma linguagem de script. Hive suporta mapeamento e reduzir scripts de transformação na linguagem de escolha do usuário (que pode ser incorporado dentro de cláusulas SQL). É amplamente utilizado no Facebook por analistas confortáveis com o SQL, bem como pela programação de mineiros de dados em Python. Os esforços de compatibilidade SQL no sector da carne de suíno foram abandonados, pelo que a diferença entre os dois projectos é muito desmarcar.

Suportar a sintaxe SQL também significa que é possível integrar com as ferramentas BI existentes, como a Microestratégia. Hive tem um driver ODBC / JDBC (que é um trabalho em andamento) que deve permitir que isso aconteça no futuro próximo. Ele também está começando a adicionar suporte para índices que devem permitir suporte para consultas drill-down comuns em tais ambientes.

Por fim, isto não é pertinente para a questão directamente, a colmeia é uma estrutura para a realização de consultas analíticas. Enquanto o uso dominante é a consulta de arquivos planos, não há nenhuma razão pela qual ele não pode consultar outras lojas. Atualmente o Hive pode ser usado para pesquisar dados armazenados no Hbase (que é uma loja de valores-chave como os encontrados nas entranhas da maioria das RDBMSes), e o projeto HadoopDB tem usado o Hive para consultar um nível federado de RDBMS.
 56
Author: Joydeep Sen Sarma, 2013-03-27 18:35:30
[[1]eu achei isso o mais útil (embora, é um ano de idade) - http://yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo Fala especificamente do porco vs colmeia e quando e onde são empregados no Yahoo. Achei isto muito perspicaz. Algumas notas interessantes:

Sobre alterações/actualizações incrementais em conjuntos de dados:

Em vez disso, juntar-se aos novos dados incrementais e usar o resultados juntamente com os resultados do anterior juntar é a abordagem correcta. Isto vai demorar apenas alguns minutos. Base de dados-padrão as operações podem ser implementadas desta forma incremental no Suin Latin, fazendo do porco uma boa ferramenta para este caso de uso.

Ao utilizar outras ferramentas através do streaming:

A integração do porco com o streaming também facilita aos investigadores pegue num programa Perl ou Python que já tenha depurado num pequeno conjunto de dados e executá-lo contra um enorme conjunto de dados.

Ao usar a colmeia para obter dados armazenagem:

Em ambos os casos, o modelo relacional e o SQL são o melhor ajuste. Realmente, data warehousing tem sido um dos principais casos de uso para SQL através grande parte da sua história. Tem as construções certas para apoiar os tipos de consultas e ferramentas que os analistas querem usar. E já está em utilizar tanto pelas ferramentas como pelos utilizadores no campo.

A colmeia do subprojeto Hadoop fornece uma interface SQL e relacional. modelo para o Hadoop. A equipa da colmeia começou a trabalhar para integrar com BI ferramentas via interfaces como ODBC.
 34
Author: j03m, 2018-03-07 18:32:04

Dá uma vista de olhos a porco Vs Colmeia numa comparação com casca de noz de um artigo "dezyre"

A Colmeia é melhor que o PIG em: partições, servidor, interface Web e suporte para o JDBC/ODBC.

Algumas diferenças:

  1. A Colmeia é melhor para dados estruturados & o PIG {[3] } é melhor para os dados semiestruturados

  2. A Colmeia é utilizada para a apresentação de relatórios & PIG for Programação

  3. A Colmeia é utilizada como um SQL declarativo & PIG como uma linguagem processual

  4. A Colmeia suporta as partições & O Porco não

  5. A Colmeia pode iniciar um servidor opcional baseado em thrift & O Porco não Pode

  6. A Colmeia define as tabelas de antemão ( esquema ) + guarda as informações do esquema numa base de dados & o PIG não tem metadados específicos da base de dados

  7. A Colmeia não suporta o Avro mas O Porco suporta. Editar: a colmeia suporta o Avro; indique o serde como org.Apache.hadoop.ramo.serde2.avro

  8. O Pig também suporta uma característica adicional do COGROUP para a realização das juntas exteriores, mas o hive não. Mas ambos colmeia e porco podem unir, ordenar e ordenar dinamicamente.

 26
Author: Ravindra babu, 2016-06-30 17:34:57
Creio que a verdadeira resposta à sua pergunta é que eles são/eram projectos independentes e não havia um objectivo coordenado centralmente. Eles estavam em diferentes espaços no início e cresceram a se sobrepor com o tempo à medida que ambos os projetos se expandiam. Parafraseado do Livro de Hadoop O'Reilly:

Porco: uma linguagem de dados e ambiente de exploração de grandes dimensões conjunto.

Colmeia: um armazém de dados distribuído

 17
Author: G__, 2013-02-02 04:50:18

Pode obter resultados semelhantes com consultas de suínos/colmeias. A principal diferença reside na abordagem para compreender/escrever / criar consultas.

O Porco tende a criar um fluxo de dados: pequenos passos onde cada um faz algum processamento
A colmeia dá-lhe uma linguagem semelhante à SQL para operar com os seus dados, por isso a transformação do RDBMS é muito mais fácil (O Porco pode ser mais fácil para alguém que não tinha experiência anterior com o SQL) {[[2]} Também vale a pena notar que para a colmeia podes ser simpático. interface para trabalhar com estes dados (Beeswax para matiz, ou interface web colmeia), e também lhe dá metastore para informações sobre seus dados (schema, etc) que é útil como uma informação central sobre seus dados.

Eu uso tanto o Hive como o Pig ,para diferentes consultas ( eu uso aquela onde eu posso escrever a consulta mais rápido / mais fácil, eu faço isso desta forma principalmente consultas ad-hoc) - eles podem usar os mesmos dados como uma entrada. Mas neste momento estou a fazer muito do meu trabalho através de Cera De Abelhas.

 12
Author: wlk, 2010-07-28 20:58:54

O Porco permite carregar dados e códigos de utilizador em qualquer ponto do oleoduto. Isto pode ser particularmente importante se os dados forem dados de streaming, por exemplo dados de satélites ou instrumentos.

A Colmeia, que é baseada em RDBMS, precisa que os dados sejam primeiramente importados (ou carregados) e depois disso podem ser trabalhados. Por isso, se estivesse a usar a colmeia em dados de transmissão, teria de continuar a encher baldes (ou ficheiros) e usar a colmeia em cada balde cheio , enquanto usava outros baldes para continuar a armazenar os dados recém-chegados.

O Porco também usa a avaliação preguiçosa. Ele permite uma maior facilidade de programação e pode-se usá-lo para analisar dados de diferentes maneiras com mais liberdade do que em uma linguagem SQL como A Hive. Então, se você realmente queria analisar matrizes ou padrões em alguns dados não estruturados que você tinha, e queria fazer cálculos interessantes sobre eles, com porco você pode ir a uma distância justa, enquanto com Colmeia, você precisa de algo mais para jogar com os resultados.

Porco é mais rápido na importação de dados, mas mais lento na execução real do que uma linguagem amigável RDBMS como o Hive.

O Pig é adequado para a parallelização e, portanto, possivelmente tem uma aresta para sistemas onde os conjuntos de dados são enormes, ou seja, em sistemas onde você está mais preocupado com o rendimento dos seus resultados do que com a latência (o tempo para obter qualquer dado particular do resultado).

 12
Author: swarb, 2014-03-22 14:04:13
Leia a diferença entre porco e Colmeia neste link.

Http://www.aptibook.com/Articles/Pig-and-hive-advantages-disadvantages-features

Todos os aspectos são dados. Se você está na confusão que escolher, então você deve ver essa página web.

 8
Author: Jegan, 2013-09-05 16:39:25
Colmeia Vs Porco -

A Colmeia é como interface SQL que permite aos utilizadores SQL conhecedores ou outras ferramentas como Tableu/Microstrategy/qualquer outra ferramenta ou linguagem que tenha interface sql..

O porco é mais como um oleoduto ETL..com comandos passo a passo como declarar variáveis, looping , iterating, condicionais, etc.

Prefiro escrever guiões de porcos em vez do QL da colmeia quando quero escrever uma lógica complexa passo a passo. Quando me sinto confortável a escrever um único sql para puxar os dados i quero usar a colmeia. para a colmeia terá de definir a tabela antes de questionar(como faz no RDBMS)

O propósito de ambos são diferentes, mas sob o capô, ambos fazem o mesmo, converter para mapa reduzir programas.Além disso, a comunidade Apache open source é adicionar cada vez mais recursos a ambos os projetos

 8
Author: Ashwin Aravind, 2015-12-24 17:55:30
  1. Pig-latin é o estilo de fluxo de dados, é mais adequado para engenheiro de software. Enquanto o sql é mais adequado para a pessoa analítica que se acostumam ao sql. Para tarefas complexas, para Colmeia você tem que criar manualmente uma tabela temporária para armazenar dados intermediários, mas não é necessário para o porco.

  2. O Pig-latin é adequado para uma estrutura de dados complicada( como um pequeno gráfico). Há uma estrutura de dados no porco chamada DataBag, que é uma colecção de tuplas. Às vezes é preciso calcular métricas que envolvem múltiplas tuplas (há uma ligação escondida entre tuplas, neste caso eu chamaria de gráfico). Neste caso, é muito fácil escrever um UDF para calcular as métricas que envolvem múltiplas tuplas. Claro que pode ser feito na Colmeia, mas não é tão conveniente como é no porco.

  3. Escrever UDF em porco é muito mais fácil do que na colmeia, na minha opinião.

  4. O Pig não tem suporte para metadados (ou é opcional, no futuro pode integrar o hcatalog). O Colmeia tem os metadados das tabelas armazenados na base de dados.

  5. Você pode depurar o programa pig no ambiente local, mas seria difícil para o Colmeia fazer isso. A razão é o ponto 3. Você precisa configurar metadados da colmeia em seu ambiente local, muito consumindo tempo.

 7
Author: zjffdu, 2013-07-15 23:37:30
Encontrei abaixo uma ligação útil para explorar como e quando usar o colmeia e o porco.

Http://www.hadoopwizard.com/when-to-use-pig-latin-versus-hive-sql/

 5
Author: Raj, 2013-09-20 07:11:11

Aqui estão algumas ligações adicionais para usar o porco ou a colmeia.

Http://aws.amazon.com/elasticmapreduce/faqs/#hive-8

Http://www.larsgeorge.com/2009/10/hive-vs-pig.html

 4
Author: Praveen Sripati, 2011-08-03 09:10:39

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.

Uma vez obtidos os dados processados, estes dados processados são mantidos em HDFS para processamento posterior para obter os resultados desejados.

Em cima dos dados processados armazenados iremos aplicar comandos SQL da colmeia para obter os resultados desejados, internamente estes comandos SQL da colmeia executam programas de redução de mapas.

 4
Author: user3167459, 2014-01-07 01:56:01

A partir da ligação: http://www.aptibook.com/discuss-technical?uid=tech-hive4&question=What-kind-of-datawarehouse-application-is-suitable-for-Hive?

A colmeia não é uma base de dados completa. As restrições e limitações de design do Hadoop e HDFS impõem limites ao que o Hive pode fazer.

A Colmeia é mais adequada para aplicações em data warehouse, onde

1) analisam-se dados relativamente estáticos,

2) não são necessários tempos de resposta rápidos e

Os dados não estão mudando rapidamente.

A Colmeia não fornece as características cruciais necessárias para o processamento de transacções on-line do OLTP. Está mais perto de ser uma ferramenta OLAP, processamento analítico Online. Assim, o Hive é mais adequado para aplicações de data warehouse, onde um grande conjunto de dados é mantido e extraído para insights, relatórios, etc.

 3
Author: Margon, 2013-09-29 06:18:20

Para dar uma visão geral de ambos de alto nível, em resumo:

O Porco é uma álgebra relacional sobre o hadoop

2) a colmeia é uma SQL sobre o hadoop (um nível acima do porco)

 2
Author: Sangram, 2014-10-04 07:56:05

Que colmeia pode fazer que não é possível no porco?

O particionamento pode ser feito usando Colmeia, mas não em porco, é uma forma de contornar a saída.

Que porco pode fazer que não é possível na colmeia?

Referenciamento posicional-mesmo quando você não tem nomes de Campos, podemos referenciar 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 porco não precisa de um esquema para escrever os valores, mas ... A colmeia precisa de um esquema.

Pode ligar - se a partir de qualquer aplicação externa à colmeia usando o JDBC e outros, mas não com o PIG.

Nota: ambos são executados em cima de HDFS (sistema de arquivos distribuídos hadoop) e as declarações são convertidas para mapear programas de redução.

 2
Author: 221B, 2015-03-29 04:32:59

Quando estamos a usar o Hadoop no sentido em que significa que estamos a tentar fazer um enorme processamento de dados, o objectivo final do processamento de dados seria gerar conteúdo/relatórios a partir dele.

Por isso, internamente consiste em duas actividades principais. 1) Carregamento De Dados 2) Gerar conteúdo e usá-lo para o relatório /etc..

Carregar / processar dados seria útil. Isto ajuda como um ETL (podemos realizar operações de etl usando scripts de porco.) Uma vez que o resultado é processado, podemos use colmeia para gerar os relatórios com base no resultado processado.

Colmeia: construída em cima de hdfs para processamento em armazém. Podemos geenerar relatórios adesivos facilmente usando colmeia a partir do conteúdo processado gerado pelo porco.
 1
Author: shyamshyre, 2014-05-29 03:45:03
O Porco Come qualquer coisa! Significa que pode consumir dados não estruturados. A Colmeia precisa de um esquema.
 0
Author: rbanikaz, 2015-02-20 17:55:36

O Porco é útil para cargas ETL em geral. Por exemplo, Conjunto de transformações que você precisa fazer aos seus dados todos os dias.

A Colmeia brilha quando é preciso fazer consultas ou explorar dados. Por vezes, pode funcionar como interface para a sua camada de visualização ( Tableau/Qlikview). Ambos são essenciais e têm um propósito diferente.
 0
Author: Krishna Kalyan, 2015-11-13 20:06:14