如果你可以在Pig(或Hive)中进行,可以在Pig(或Hive)中进行。
否则,在Java MapReduce中执行此操作。
猪的好处:
像CSV这样的结构化数据非常容易加载和使用 并不比Java慢很多 不容易出现Java级别的错误 更易于阅读和书写 无需编译:易于维护,易于部署 有些事情你可能认为你最初不能在Pig中做,并且想要使用Java,但是一旦你了解了它,你就可以在Pig中做到这一点:
您可以用Java编写用户定义的加载器。你打算写一些Java来解析复杂的数据格式,所以为什么不在Pig Loader中呢? 嵌套map和bag数据类型可以很好地建模分层数据结构,但是你可能不得不编写大量的UDF。 您可以在Pig中使用Java MapReduce。这允许你在Pig中进行硬操作,但在其他地方更容易。 这里有一些,但你明白了。 Pig是非常可定制的,一般来说你最终会编写更少的Java。
基本的东西很容易。我们可以通过一些努力来完成分层数据结构和自定义加载等操作。好的,那还剩下什么?
异常使用分区器来执行MapReduce不适用的操作。 真是讨厌的数据格式或完全非结构化的数据(视频,音频,原始的人类可读文本) 在DistributedCache中执行复杂的操作(基本的事情可以通过JOIN和USING'复制'来完成) 希望其他人可以在评论中添加他们在Pig中无法做的事情。