如何动态计算pig load命令的输入

fslejnso  于 2021-06-24  发布在  Pig
关注(0)|答案(2)|浏览(235)

有没有一种方法可以动态计算pig中load语句的输入值?从概念上讲,我想这样做:

%declare MYINPUT com.foo.myMethod('2013-04-15');
raw = LOAD '$MYINPUT' ...

mymethod()是一个udf,它接受日期作为输入,并以字符串形式返回目录列表(逗号分隔)。然后将该字符串作为load语句的输入。
谢谢。

i34xakig

i34xakig1#

我也遇到了类似的问题,选择了javaloadfunc实现,而不是预处理器。使用自定义loadfunc意味着分析师仍然可以使用stock pig可执行文件运行该脚本,并且不需要其他依赖项。

u1ehiz5o

u1ehiz5o2#

我觉得mymethod()不需要是自定义项。假定这个目录列表不需要在map reduce中计算,您可以先运行函数获取字符串,然后将其作为传递给pig的属性。如果您的驱动程序是java的,则提供以下示例:

String myInput = myMethod("2013-04-15");
PigServer pig = new PigServer(ExecType.MAPREDUCE);
Map<String,String> myProperties = new HashMap<String,String>();
myProperties.put("myInput",myInput);
pig.registerScript("myScriptLocation.pig");

然后你的剧本会以

raw = LOAD '$myInput' USING...

这是假设您的myinput字符串是glob格式的,您可以读取,或者您有一个不同的loadfunc可以处理逗号分隔的字符串。

相关问题