在哪种情况下应该使用 pig UDF,在哪种情况下应该使用 Pig Latin
背景: 我正在做一个重建 SQL“日志”数据库的项目,我必须设计新的 NoSQL 数据库。我正在学习 NoSQL,对 Hadoop/Cloudera 了解甚少。
- 我想用 Pig 加载数据
- 我没有使用 Cloudera,但可能会使用它
感谢您的回答。
在哪种情况下应该使用 pig UDF,在哪种情况下应该使用 Pig Latin
背景: 我正在做一个重建 SQL“日志”数据库的项目,我必须设计新的 NoSQL 数据库。我正在学习 NoSQL,对 Hadoop/Cloudera 了解甚少。
感谢您的回答。
如果您可以在 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 'replicated' 完成) 希望其他人可以添加他们无法做到的事情猪在评论里。