Pig 中的 Udfs 共享上下文
Posted
技术标签:
【中文标题】Pig 中的 Udfs 共享上下文【英文标题】:Udfs shared context in Pig 【发布时间】:2013-11-22 16:05:13 【问题描述】:我遇到了一个问题,无法弄清楚下面这些行的实际含义:
在 exec 方法中使用对象时,请记住任何 对返回的属性所做的更改不会传输到 后端 UDF 的其他实例,除非您碰巧有 同一任务中同一 UDF 的另一个实例
这些是编程 pig(第 131 页)一书中的行,为了让您了解上下文,所有这些都与 Pig 中的 UDF 和执行上下文有关,同一 UDF 的所有实例都可以从前端(编译)到后端(运行)。
我完全不明白的是,这行是什么意思
...you happen to have another instance of the same UDF in the same task
我从中得出的结论是,这与 推测执行有些关系,即推测任务实际上与之前启动的正常任务共享同一个 UDF 实例(在猪上下文),否则我完全误解了我理解这一切的方式。
【问题讨论】:
【参考方案1】:我在这里猜测,所以我不介意其他人的验证。
如果您多次调用 UDF,我想您可能在同一个任务中拥有同一个 UDF 的同一个实例。我不认为他们在谈论投机执行。例如:
B = FOREACH A GENERATE udf1(col1), udf1(col2), udf1(col3);
我想这试图解释的是您不能更改 UDF 中的状态/上下文并期望它传播给其他人。该类被实例化了好几次,一般每个任务一次。
【讨论】:
以上是关于Pig 中的 Udfs 共享上下文的主要内容,如果未能解决你的问题,请参考以下文章