我对Pig,Hive抽象是什么有基本的了解。但是我不清楚需要Hive,Pig或原生地图减少的场景。
我经历了一些文章,其中基本上指出Hive用于结构化处理,而Pig用于非结构化处理。我们什么时候需要原生地图减少?你能指出一些使用Pig或Hive无法解决但却在原生地图中减少的场景吗?
答案 0 :(得分:19)
复杂的分支逻辑有很多嵌套的if .. else ..结构在Standard MapReduce中更容易,更快速地实现,为了处理你可以使用Pangool的结构化数据,它还简化了JOIN这样的事情。此外,标准MapReduce可让您完全控制,以最大限度地减少数据处理流程所需的MapReduce作业数量,从而转化为性能。但它需要更多时间来编码和引入变化。
Apache Pig也适用于结构化数据,但它的优点是能够处理数据的BAG(按键分组的所有行),实现以下内容更简单:
Hive更适合于即席查询,但其主要优势在于它具有存储和分区数据的引擎。但它的表可以从Pig或Standard MapReduce中读取。
还有一件事,Hive和Pig不适合使用分层数据。
答案 1 :(得分:14)
简短回答 - 当我们需要对我们想要处理数据的方式进行非常深入的细粒度控制时,我们需要MapReduce。有时,根据Pig和Hive查询来表达我们需要的东西并不是很方便。
不应该完全不可能做到,你可以使用MapReduce,通过Pig或Hive。凭借Pig和Hive提供的灵活性,您可以以某种方式实现目标,但可能并不那么顺利。你可以编写UDF或做一些事情来实现它。
这些工具的使用没有明显的区别。这完全取决于您的特定用例。根据您的数据和处理类型,您需要更好地确定哪种工具符合您的要求。
修改:
前段时间我有一个用例,我必须收集地震数据并对其进行一些分析。保存这些数据的文件的格式有点奇怪。部分数据是EBCDIC编码的,而其余数据是二进制格式。它基本上是一个平面二进制文件,没有像\ n或其他东西的分隔符。我很难找到使用Pig或Hive处理这些文件的方法。结果我不得不与MR安定下来。最初花了一些时间,但是一旦你准备好了基本的模板,MR就会变得更加顺畅了。
所以,就像我之前说的那样,它基本上取决于你的用例。例如,迭代数据集的每个记录在Pig(只是一个foreach)中非常容易,但是如果你需要 foreach n 怎么办?因此,当您需要对您处理数据的方式进行“那种”控制时,MR更适合。
另一种情况可能是您的数据是分层的而不是基于行的,或者您的数据是高度非结构化的。
使用MR而不是使用Pig / Hive,更容易解决涉及作业链和作业合并的Metapatterns问题。
与使用Pig / hive相比,使用某些xyz工具完成特定任务有时非常方便。恕我直言,MR在这种情况下也变得更好。例如,如果您需要对BigData进行一些统计分析,那么与Hadoop一起使用的R可能是最好的选择。
HTH
答案 2 :(得分:10)
<强>的MapReduce:强>
Strengths:
works both on structured and unstructured data.
good for writing complex business logic.
Weakness:
long development type
hard to achieve join functionality
Hive:
Strengths:
less development time.
suitable for adhoc analysis.
easy for joins
Weakness :
not easy for complex business logic.
deals only structured data.
<强>猪强>
Strengths :
Structured and unstructured data.
joins are easily written.
Weakness:
new language to learn.
converted into mapreduce.
答案 3 :(得分:5)
蜂房
优点:
喜欢Sql 数据库人喜欢这样。 对结构化数据的良好支持。 目前支持数据库架构和视图结构 支持并发多用户,多会话场景。 更大的社区支持。 Hive,Hiver服务器,Hiver Server2,Impala,Centry已经
缺点: 随着数据变得越来越大,内存溢出问题,性能会下降。不能做很多事。 分层数据是一项挑战。 非结构化数据需要udf之类的组件 在大数据等情况下,多种技术的组合可能是具有UTDF的噩梦动态部分
猪: 优点: 基于优秀脚本的数据流语言。
缺点:
非结构化数据需要udf之类的组件 不是一个很大的社区支持
MapReudce: 优点: 不同意“难以实现连接功能”,如果您了解要实现的连接类型,则可以使用少量代码实现。 大多数时候MR产生更好的性能。 MR对分层数据的支持非常好,特别是实现树状结构。 更好地控制分区/索引数据。 工作链。
缺点: 需要很好地了解api以获得更好的性能等 代码/调试/维护
答案 4 :(得分:2)
Scenarios其中Hadoop Map Reduce优先于Hive或PIG
当您需要明确的驱动程序控制时
每当作业需要实施自定义分区程序
如果已存在预定义的Java Mappers或Reducers库以供作业
Pig / Hive的优点:
查看此帖子进行Pig Vs Hive比较。
答案 5 :(得分:1)
我们使用PIG和HIVE可以做的所有事情都可以使用MR实现(有时它会耗费时间)。 PIG和HIVE使用下面的MR / SPARK / TEZ。因此,在Hive和PIG中,MR可以做或不可能做的所有事情。
答案 6 :(得分:1)
Here是一个很好的比较。 它指定了所有用例场景。