【发布时间】:2014-02-25 20:25:26
【问题描述】:
我已经看到这个问题,但我还没有看到答案..
是否可以一次从 pig 调用 UDF?
我基本上希望通过对 java UDF 的一次调用来处理我存储的文本文件的转换。转换的内部在Java中更容易处理,开销很小,所以我宁愿不将逻辑转换为pig..
我成功调用 UDF 的唯一方法是在某些数据集上作为 FOREACH 语句的一部分。我认为我可以创建一个大小为 1 的虚拟元组,然后将其用作“foreach”的一部分,但我也无法弄清楚创建这个虚拟元组的语法..
UDF 不需要返回任何内容,它会处理 FS 逻辑本身,我只想能够从 pig 脚本中执行它,因为在此处检测它更有意义,然后作为更大工作流程的一部分..
任何帮助将不胜感激! 谢谢!
【问题讨论】:
-
文件有多大?听起来你不应该使用 Pig。您是否考虑过直接通过 FileSystem 类使用 Hadoop API?
-
文件不是特别大,我遇到的问题是它是一个两遍过程,其中第二遍必须使用第一遍的状态(以地图的形式)。这两部分在逻辑上是结合在一起的,猪对于所有其他处理之前和之后肯定是必要的。我希望不需要单独的猪脚本,我很惊讶到目前为止我见过的文档,您只能将 UDF 作为 foreach 迭代语句的一部分执行
-
如果您真的想使用 Pig,您可以随时执行 GROUP ALL 并将整个数据包传递到您的 UDF。在这种情况下,您基本上只有一条记录,UDF 可以一次处理所有记录。
标签: java apache-pig