python - 如何报告 Python UDF(针对 Pig)的进度?

标签 python apache-pig

Here是 Java UDF 的说明,但我想从 Python UDF 执行此操作。

最佳答案

您可以尝试获取 PigProgressable 的实例:

myudf.py

from time import sleep
from org.apache.pig.tools.pigstats import PigStatusReporter

@outputSchema('i:int')
def tester(foo):
    # Sleeps for a total of 3 minutes

    e = PigStatusReporter.getInstance()
    e.progress()
    sleep(60)
    e.progress()
    sleep(60)
    e.progress()
    sleep(60)
    e.progress()

    return 1

myscript.pig

-- Waits for 1.6 minutes before killing the job
SET mapred.task.timeout 100000 ;

register 'myudf.py' using jython as myudf ;
A = LOAD '$input' AS (foo:chararray) ;
B = FOREACH A GENERATE myudf.tester(foo) ;

只有当e.progress()实际发送心跳时,此示例才会成功,否则会超时。我在 pig 0.10 上通过了这个测试。

关于python - 如何报告 Python UDF(针对 Pig)的进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213016/

相关文章:

hadoop - 使用Pig脚本读取配置单元表

hadoop - MapReduce 现实生活中的用途

hadoop - pig 错误 0 : Scalar has more than one row in the output

python - Tkinter 小部件上的垂直和水平滚动条

python - 尝试使用 matplotlib 绘图时,我不断收到错误消息

python - pycharm工作在Mac上的pygame中无法获取声音或音乐

python - 在后台启动进程并检索输出

hadoop - Pig生成 key 更改列-比较先前记录与当前记录,但列不同

python - 如何将 python 脚本 cmd 输出重定向到文件?

hadoop - 如何与 Pig 中的其他字段一起计数?