2013-12-11 79 views
0

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

%默认OUTPUTPATH myfn();

路径= myfn();

似乎没有工作。

任何想法?

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

回答

1

不幸的是,据我所知,在纯猪身上没有办法做到这一点。但是,您可以在python wrapper中定义这些变化的变量。在你的情况,你只是这样定义args来字典:

d = { 
    'OUTPATH': myfn(), 
    } 

然后传递字典,如:

P = Pig.compile(path_to_my_script) 

Q = P.bind(d) 

results = Q.run() 

当然还有更多一点点添加到包装,但它应该很清楚从文档。

+0

非常感谢您的反馈意见。正如我将在亚马逊EMR上运行这个,通过数据管道JSON配置文件控制的,我不认为我具有如此级别的可配置性来运行嵌入式Python。然而,在我的情况下,一种解决方法是创建一个猪脚本模板,换出路径并每天将它上传到S3,并使用相同的文件名。这将是非常简单的实施。 – user3092621