我遇到了一个问题,弄清楚下面那些行实际上是什么意思:
在exec方法中使用对象时,请记住任何 对返回的属性所做的更改将不会传输到 除非您碰巧拥有,否则后端的UDF的其他实例 同一任务中同一UDF的另一个实例
这些是来自书籍编程猪(第131页)的行,并且为了将您置于上下文中,所有这些都与Pig中的UDF和执行上下文有关,同一UDF的所有实例都可以共享上下文中的上下文。前端(编译)到后端(正在运行)。
我根本不明白的想法是,这一行的含义是什么
...you happen to have another instance of the same UDF in the same task
我从中得到的是对推测性执行的影响,即推测性任务实际上是与之前启动的正常任务共享UDF的同一实例(在猪上下文),或者我完全误解了我对这一切的理解。
答案 0 :(得分:0)
我在这里猜测,所以我不介意别人的验证。
我想如果你多次调用UDF,你可以在同一个任务中拥有相同UDF的相同实例。我认为他们不是在谈论投机性执行。 E.g:
B = FOREACH A GENERATE udf1(col1), udf1(col2), udf1(col3);
我想这是在尝试解释的是,你无法改变UDF中的状态/上下文并期望它传播给其他人。该类被多次实例化,一般为每个任务一次。