我的背景 - 4周龄在Hadoop的世界。 涉猎使用Cloudera的Hadoop的VM在蜂巢,猪和Hadoop一点。 读过谷歌的纸张上的map-reduce和GFS( PDF链接 )。
我明白那个-
猪的语言隐语是从移位(适合程序员的思维方式)像SQL编程的声明样式和蜂巢的查询语言非常类似于SQL。
猪坐落在Hadoop之上,并在原则上也可以坐在树妖的顶部。 我可能是错的,但蜂巢被紧密地耦合到Hadoop的。
双方的Pig Latin和蜂巢命令编译为地图和减少就业机会。
我的问题 - 什么是兼具当一个人(说的是猪)可以达到目的的目标。 难道仅仅是因为猪是由雅虎福音 和蜂巢被Facebook?
Answer 1:
看看这个职位由艾伦·盖茨,雅虎猪建筑师!来比较时会使用像蜂巢,而不是猪一个SQL。 他提出了非常有说服力的情况下,像猪八戒程序语言的有用性(对声明SQL)和它的实用程序数据流的设计师。
Answer 2:
蜂巢旨在吸引舒服SQL社区。 它的理念是,我们并不需要另外的脚本语言。 蜂巢支持地图和减少用户的选择(可嵌入SQL子句中)的语言转换脚本。 它被广泛分析师熟悉SQL,以及通过数据挖掘人员在Python编程中使用了Facebook。 猪SQL兼容性的努力已经被放弃AFAIK - 所以这两个项目之间的差别是非常明显的。
支持SQL语法也意味着它可能与像现有的MicroStrategy的商务智能工具集成。 蜂巢有一个ODBC / JDBC驱动程序(这是一项正在进行的工作)应该让这种在不久的将来发生。 它也开始增加对指标应该允许在这样的环境中很常见钻取查询支持。
最后 - 这是不相关的,直接的问题 - 海夫是进行分析查询的框架。 虽然其主导用途是查询平面文件,没有理由为什么不能查询其他商店。 目前蜂巢可以用来查询存储在HBase的(这是一个key-value存储像那些在大多数的RDBMS的胆量找到)的数据,和HadoopDB项目已使用蜂巢查询联合RDBMS层。
Answer 3:
我发现这是最有帮助的(尽管这是一岁) - http://yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo
它特别谈到猪VS蜂巢和何时何地,他们在雅虎使用。 我发现这非常有见地。 一些有趣的注意事项:
增量变化/更新的数据集:
相反,在加入对新的增量数据,并使用该结果与之前的完全结果联合起来是正确的做法。 这将只需要几分钟的时间。 标准数据库操作可以在猪拉丁这种增量方式来实现,使得猪的这种使用情况的好工具。
在通过流使用其他工具:
与流猪整合也很容易让研究人员采取一个小数据集,他们已经调试一个Perl或Python脚本并运行它针对庞大的数据集。
在使用蜂房数据仓库:
在这两种情况下,关系模型和SQL是最合适的。 事实上,数据仓库一直是核心用例SQL一个通过它的历史。 它有正确的结构,支持的查询类型和工具,分析师要使用的。 而且它已经在通过工具和在该领域的用户都使用。
Hadoop的子项目蜂房提供Hadoop的一个SQL接口和关系模型。 Hive的团队已经开始工作,通过如ODBC接口与BI工具进行整合。
Answer 4:
已经在看看猪Vs的蜂巢比较果壳从“dezyre”文章
蜂巢是比猪更好:分区,服务器,Web界面和JDBC / ODBC支持。
一些差异:
配置单元是最好的用于结构化数据与PIG最好为半结构化数据
配置单元是用于报告和PIG 编程
蜂巢被用作声明SQL和PIG作为程序语言
蜂巢支持分区和PIG不
蜂房可以启动一个可选的节俭基于服务器和PIG不能
蜂房限定在数据库及PIG预先表( 模式 )+存储架构信息不具有数据库的专用元数据
蜂房不支持的Avro但PIG一样。 编辑:蜂巢支持的Avro,指定作为SERDE org.apache.hadoop.hive.serde2.avro
猪还支持其他功能协同组进行外部连接,但是蜂房没有。 但两者蜂巢和PIG都可以加入,为了和排序动态。
Answer 5:
我相信真正的回答你的问题是,他们是/是独立的项目,并没有集中协调的目标。 他们在不同的空间早期并已成长为这两个项目扩大与时间重叠。
从Hadoop的O'Reilly出版的转述:
猪:探索大型数据集的数据流语言和环境。
蜂巢:分布式数据仓库
Answer 6:
可以实现与猪/蜂巢查询类似的结果。 主要的区别在于内角度来理解/写/创建查询。
猪往往会造成数据流:凡在每次你做一些处理小的步骤
蜂房为您提供类似于SQL的语言对你的数据进行操作,所以从RDBMS转化为更容易(猪可能是人谁曾与SQL不早体验更轻松)
这也是值得注意的是,对于蜂巢,你可以很好的接口来使用该数据(蜂蜡色调,或蜂巢网络接口),并且它也给你metastore了解有关数据,这是有用的信息(模式等)有关数据中心的信息。
我同时使用Hive和Pig,针对不同的查询(我用的是一个我在哪里可以查询更快的写入/更容易,我做这种方式主要是即席查询) - 他们可以使用相同的数据作为输入。 不过,我目前通过蜂蜡做很多我的工作。
Answer 7:
猪允许人们在管道中的任何点加载数据和用户代码。 这是如果数据是一个数据流,用于从卫星或仪器例如数据可以是特别重要的。
蜂房,这是基于RDBMS,首先需要输入该数据(或加载),并且它可以在被加工后。 所以,如果你对数据流采用蜂巢,你就必须保持灌装桶(或文件),并使用每个水桶装满蜂箱,而使用其他桶,以保持存储新到达的数据。
猪也使用懒评价。 它允许更容易编程的,人们可以用它来分析以不同的方式与数据比像蜂巢一样的语言SQL更多的自由。 所以,如果你真的想分析的矩阵或图案在你有一些非结构化数据,并希望做他们感兴趣的计算,与猪,你可以去一些公平的距离,同时与蜂巢,还需要其他的结果玩。
猪是在数据导入速度,但速度慢,在实际执行不是像蜂巢的RDBMS友好的语言。
猪是非常适合并行化,所以它可能对其中的数据集是巨大的,你关注更多关于吞吐量的效果比延迟(时间以获得结果的任何特定数据)的系统,即系统的优势。
Answer 8:
阅读此链接Pig和Hive的区别。
http://www.aptibook.com/Articles/Pig-and-hive-advantages-disadvantages-features
所有方面给出。 如果你是在混乱中以供选择,那么你必须看到,网页。
Answer 9:
蜂巢Vs的Pig-
蜂巢是SQL接口,使SQL精明的用户或喜欢Tableu / MICROSTRATEGY /任何其他工具或语言,具有SQL接口其他工具..
PIG更像是ETL pipeline..with步步命令等声明变量,循环,迭代,条件语句等
我更喜欢蜂巢QL编写猪脚本时,我想写一步逻辑复杂的一步。 当我舒适的单个SQL拉我想我使用蜂巢中的数据。 为蜂巢您需要查询之前定义表(如你在RDBMS做)
两者的目的是不同的,但引擎盖下,都做同样的,转换映射减少programs.Also Apache的开源社区是添加越来越多的功能,这两个项目有
Answer 10:
猪拉丁是数据流的风格,更适合于软件工程师。 而SQL更适合谁是习惯的sql分析的人。 对于复杂的任务,为蜂巢您必须手动创建临时表来存储中间数据,但它是没有必要的猪。
猪拉丁是适用于复杂的数据结构(如小图)。 有一个称为DataBag猪的数据结构是元组的集合。 有时候,你需要计算其涉及多个元组(有元组之间的隐藏链接,在这种情况下,我只能说这图)指标。 在这种情况下,它是很容易写一个UDF来计算其涉及多个元组指标。 当然,它可以在蜂巢中完成,但因为它是在猪也不是那么方便。
猪多写UDF在我看来比蜂巢更容易。
猪没有元数据支持,(或者是可选的,在未来它可以整合hcatalog)。 配置单元存储在数据库表的元数据。
你可以在当地的环境中进行调试猪脚本,但它是很难蜂巢做到这一点。 原因是点3.您需要建立蜂巢元数据在本地环境,非常耗时。
Answer 11:
我发现下面的有用链接探讨如何以及何时使用Hive和Pig。
http://www.hadoopwizard.com/when-to-use-pig-latin-versus-hive-sql/
Answer 12:
下面是使用猪或蜂巢一些额外的链接。
http://aws.amazon.com/elasticmapreduce/faqs/#hive-8
http://www.larsgeorge.com/2009/10/hive-vs-pig.html
Answer 13:
从链接: http://www.aptibook.com/discuss-technical?uid=tech-hive4&question=What-kind-of-datawarehouse-application-is-suitable-for-Hive ?
蜂巢是不是一个完整的数据库。 设计约束和Hadoop和HDFS的限制强加什么蜂巢能做到的极限。
蜂巢是最适合数据仓库应用中,
1)相对静态的数据进行分析,
2)快速的响应时间不是必需的,并且
3)当数据不迅速改变。
蜂房不提供OLTP,联机事务处理所需的关键功能。 它更接近于一个OLAP工具,联机分析处理。 所以,蜂巢是最适合于数据仓库应用程序,其中一个大的数据集进行维护和开采的见解,报告等
Answer 14:
在简单的话,猪八戒是一个用于创建与使用的Hadoop MapReduce程序,使用猪的脚本,我们将处理大量数据成所需格式的高层次平台。
一旦所获得的处理后的数据,该处理过的数据被保持在HDFS用于以后的处理,以获得所需的结果。
在存储处理数据的顶部我们将申请HIVE SQL命令来得到想要的结果,这在内部蜂巢SQL命令运行的Map Reduce程序。
Answer 15:
为了让这两个非常高度概括,简而言之:
1)猪超过的hadoop一个关系代数
2)配置单元是一个SQL的hadoop以上(高于猪一个电平)
Answer 16:
HIVE什么可以做的,这是不可能的猪?
分区可以使用HIVE做,但不是猪,它是绕过输出的方式。
猪有什么可以做的,这是不可能的HIVE?
位置引用 - 即使你没有字段名,大家可以参考使用的位置,比如$ 0 - 为第一场,第二次为1 $等等。
而另一个根本的区别是,猪并不需要一个架构编写的值,但HIVE确实需要的模式。
您可以从任何外部应用程序连接使用JDBC等,而不是猪蜂巢。
注:在HDFS(Hadoop分布式文件系统)和报表的顶部上同时运行转换为映射精简程序。
Answer 17:
当我们使用Hadoop
在这个意义上它意味着我们试图海量数据处理,数据处理的最终目标将产生出来的内容/报告。
因此,它在内部包括2个主要活动:
1)装载数据处理
2)生成的内容,并用它来报告/等等。
加载/数据处理 - >猪将是有帮助。
这有助于为ETL(我们可以进行使用猪脚本ETL操作)。
一旦结果进行处理,我们可以使用蜂巢基于处理结果的报告。
蜂巢:它建立在HDFS仓库处理的顶部。
我们可以很容易地生成使用从猪产生的处理内容蜂巢即席报告。
Answer 18:
猪吃的东西! 这意味着它可以消耗非结构化数据。
蜂巢需要模式。
Answer 19:
猪是一种ETL工作负载,一般来讲是有用的。 比如组变换你需要每天做您的数据。
当你需要运行即席查询或只是想探索数据蜂巢眼前一亮。 它有时可以作为接口,可视化层(的Tableau / QlikView的)。
无论是必要的,服务于不同的目的。
文章来源: Difference between Pig and Hive? Why have both? [closed]