我正在阅读Hadoop mapreduce教程并提出以下浅层理解。任何人都可以帮助确认我的理解是否正确吗?
Mapreduce是一种聚合数据的方法
产生类似的结果,就像使用SQL聚合函数在RDBMS中可以完成的那样
select count, sum, max, min, avg, k2
from input_file
group by k2
Mapreduce作业可以组合/嵌套,就像SQL语句可以嵌套以产生复杂的聚合输出一样。
这是对的吗?
Hive在Hadoop之上,MR代码将由HiveQL Process Engine生成。 因此从编码角度来看,使用Java的MR编码将逐渐被高级HiveQL取代。 这是真的吗?
答案 0 :(得分:1)
看一下这篇文章,以便比较RDBMS& Hadoop
1. 与RDBMS不同,Hadoop可以处理Peta字节的数据,它使用商用硬件分布在数千个节点上。 Map reduce算法的效率取决于数据处理过程中的数据局部性。
2. RDBMS只能处理结构化数据 ,这与Hadoop不同,Hadoop可以处理结构化,非结构化和半结构化数据。
您对汇总,分组和分区的理解是正确的。
您仅提供了处理结构化数据的示例。
HiveQL正在转换为一系列地图缩减作业 。在性能方面,与原始Map减少作业相比,HiveQL作业将更慢。如上所述,HiveQL无法处理所有类型的数据,因此它无法用java代码替换Map reduce作业。
HiveQL将与其他语言的Map Reduce作业共存。 如果您正在寻找性能作为地图缩减作业的关键标准 ,则必须考虑使用Java Map Reduce作业。如果您正在为半结构化的& amp;在非结构化数据中,您必须考虑Hive QL map减少作业的替代方案。