Apache pig 使用UDF在pig中动态设置输入和输出路径

Apache pig 使用UDF在pig中动态设置输入和输出路径,apache-pig,Apache Pig,我想创建一个无参数pig脚本,动态创建输入和输出路径。 脚本本身应该根据当前日期确定输入文件glob,同样,也应该根据当前日期确定输出文件路径。虽然我知道可以轻松地传入参数,但我希望有一个无参数脚本,并使用两个简单的jython UDF来计算这些路径。 我该怎么做?我似乎无法通过调用UDF来设置变量。比如说, %默认输出路径myfn() 或 path=myfn() 好像不管用 有什么想法吗 (为什么没有args?因为我希望有一个静态的amazon数据管道配置,它每天运行相同的脚本,但每次都会运行

我想创建一个无参数pig脚本,动态创建输入和输出路径。 脚本本身应该根据当前日期确定输入文件glob,同样,也应该根据当前日期确定输出文件路径。虽然我知道可以轻松地传入参数,但我希望有一个无参数脚本,并使用两个简单的jython UDF来计算这些路径。 我该怎么做?我似乎无法通过调用UDF来设置变量。比如说,

%默认输出路径myfn()

path=myfn()

好像不管用

有什么想法吗


(为什么没有args?因为我希望有一个静态的amazon数据管道配置,它每天运行相同的脚本,但每次都会运行最后一天或上周的日志文件。)

遗憾的是,据我所知,在纯pig中无法做到这一点。但是,您可以在中定义这些变化的变量。在您的情况下,只需定义args的dict,如下所示:

d = {
     'OUTPATH': myfn(),
    }
然后像这样传递这个命令:

P = Pig.compile(path_to_my_script)

Q = P.bind(d)

results = Q.run()

当然还有一点需要添加到包装器中,但从文档中应该可以清楚地看到。

非常感谢您的反馈。由于我将在AmazonEMR上运行它,通过一个数据管道JSON配置文件进行控制,我认为我没有像这样运行嵌入式python的配置能力。然而,在我的例子中,一个解决方法是创建一个pig脚本模板,交换路径,并每天以相同的文件名将其上传到S3。这将非常容易实现。