Udfs在Pig中共享上下文

时间:2013-11-22 16:05:14

标签: hadoop mapreduce apache-pig

我遇到了一个问题,弄清楚下面那些行实际上是什么意思:

  

在exec方法中使用对象时,请记住任何   对返回的属性所做的更改将不会传输到   除非您碰巧拥有,否则后端的UDF的其他实例   同一任务中同一UDF的另一个实例

这些是来自书籍编程猪(第131页)的行,并且为了将您置于上下文中,所有这些都与Pig中的UDF和执行上下文有关,同一UDF的所有实例都可以共享上下文中的上下文。前端(编译)到后端(正在运行)。

我根本不明白的想法是,这一行的含义是什么

...you happen to have another instance of the same UDF in the same task

我从中得到的是对推测性执行的影响,即推测性任务实际上是与之前启动的正常任务共享UDF的同一实例(在猪上下文),或者我完全误解了我对这一切的理解。

1 个答案:

答案 0 :(得分:0)

我在这里猜测,所以我不介意别人的验证。

我想如果你多次调用UDF,你可以在同一个任务中拥有相同UDF的相同实例。我认为他们不是在谈论投机性执行。 E.g:

B = FOREACH A GENERATE udf1(col1), udf1(col2), udf1(col3);

我想这是在尝试解释的是,你无法改变UDF中的状态/上下文并期望它传播给其他人。该类被多次实例化,一般为每个任务一次。