分享

hadoop家族Pig和Hive有什么不同啊?

yuwenge 发表于 2013-12-1 07:43:11 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 39886
    对于开发人员,直接使用Java APIs可能是乏味或容易出错的,同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案,使得Hadoop编程变得更加容易。
    HIVE简单来讲是为传统数据库工程师服务的,可以把sql转换为MapReduce
    HIVE介于Pig和传统的RDBMS之间,和Pig一样,Hive也被设计为HDFS作为存储,但是他们之间有着显著的区别。Hive的查询语言HiveQL,是基于SQL的。任何熟悉SQL的人都可以轻松使用HiveQL写查询。和RDBMS相同。Hive要求所有数据必须存储在表中,表必须有模式,而模式由Hive进行管理。但是Hive允许为预先存在于HDFS的数据关联一个模式。所以,数据的加载步骤是可选的。和Pig一样,Hive也不支持低时延查询。
    Pig是一种编程语言,Pig相比Hive相对轻量,它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。
    Pig最大的作用就是对mapreduce算法(框架)实现了一套shell脚本 ,类似我们通常熟悉的SQL语句,在Pig中称之为Pig Latin,在这套脚本中我们可以对加载出来的数据进行排序、过滤、求和、分组(group by)、关联(Joining),Pig也可以由用户自定义一些函数对数据集进行操作,也就是传说中的UDF(user-defined functions)。
    Pig利用MapReduce将计算分成两个阶段,第一个阶段分解成为小块并且分布到每一个存储数据的节点上进行执行,对计算的压力进行分散,第二个阶段聚合第一个阶段执行的这些结果,这样可以达到非常高的吞吐量,通过不多的代码和工作量就能够驱动上千台机器并行计算,充分的利用计算机的资源,打消运行中的瓶颈。





已有(5)人评论

跳转到指定楼层
wubaozhou 发表于 2014-12-31 13:48:13
回复

使用道具 举报

ymhua 发表于 2015-8-4 17:43:25
讲的很好,谢谢分享!
回复

使用道具 举报

a530491093 发表于 2019-1-14 15:45:39
详细,感谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条