2011-02-11 52 views
1

这个问题可能听起来很刺激,实际上并没有什么关系。这是我与我的一位同事进行的一场小型辩论的衍生。他一直坚持认为HIVE和PIG可以被称为单独的“编程模型”,因为当你编写MapReduce作业时,你并不需要考虑MapReduce - 特别是如果你正在编写HIVE。从程序员的角度来看,MapReduce部分是完全抽象的。它完全像SQL一样。可以将PIG和HIVE称为单独的编程模型吗?

但我有点不同意,因为用这些语言编写的脚本最终会转换为多个mapreduce作业。因此,可以将这些称为更高级的编程语言,以针对相同的模型进行编程。从编程模型的角度来看,应该从待处理的底层数据的角度来看,而不是程序员。

您的意见是?

回答

2

我将其定义如下:HIVE和PIG在不同的抽象层次上。关闭类比是SQL和查询执行计划。它们都解决了数据库查询的相同问题,但是SQL是声明性的,并且声明了应该是结果,而查询执行计划指定了实现它的操作。在这个例子中,HIVE是SQL和PIG - 查询执行计划。
我们可以说HIVE是宣告性的,并且坐在较高的抽象层次上,然后是命令性的PIG。因此,逻辑上HIVE请求可以转换为PIG。

相关问题