在哪种情况下我们应该使用pig UDF,在这种情况下我们应该使用Pig Latin
上下文: 我正在开发一个项目来重建SQL" logs"数据库,我必须设计新的NoSQL数据库。我正在学习NoSQL,对Hadoop / Cloudera知之甚少。
感谢您的回答。
答案 0 :(得分:0)
如果您可以在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中无法做的事情。