我怀疑在哪些情况下,选择MapReduce而不是hive或pig。
我知道当
- 我们需要对输入数据进行深入过滤
- 使用非结构化数据
- 使用图形。。。。但是,有没有什么地方我们不能使用hive、pig,或者我们可以更好地使用MapReduce,而且它在实际项目中使用率很高
Hive和Pig是通用的解决方案,它们在处理数据时会有开销。在大多数情况下,它可以忽略不计,但在某些情况下可能相当可观。
如果有许多表需要连接,使用Hive和Pig尝试应用通用解决方案,如果在了解数据后使用map reduce,则可以找到更优化的解决方案。
然而,map reduce应该被视为内核。如果您的解决方案可以在其他地方重复使用,那么最好使用map reduce进行开发,并与Hive/Pig/Sqoop集成。
Pig可用于处理非结构化数据。在处理数据时,它将比Hive提供更大的灵活性。
Bare MapReduce现在编写得不多了。更高级别的抽象(如您提到的两个)更受欢迎,也更适合查询工作负载。
即使在HiveQL限制性太强的情况下,也可能会为低级别的批处理作业或越来越流行的Spark寻找替代方案,如Cascading或Scalding。
使用这些高级抽象的一个主要动机是,大多数应用程序都需要一系列映射和减少阶段,而MapReduce API让您自己来解决如何在任务之间序列化数据的问题。