PIG - 将字符串连接到参数?

时间:2014-07-17 18:40:36

标签: hadoop grid apache-pig

我有一个类似于以下内容的猪脚本:

a = LOAD 'feedname.hourly_data' 
USING org.apache.hcatalog.pig.HCatLoader();
b = FILTER a BY dt=='$date{00}';
c = GROUP b ALL;
d = FOREACH c GENERATE COUNT(b); 
dump d;

使用以下参数执行脚本:

pig -useHCatalog -p date=20140708 my_script.pig

请注意,此脚本适用于硬编码的dt值:

a = LOAD 'feedname.hourly_data' 
USING org.apache.hcatalog.pig.HCatLoader();
b = FILTER a BY dt=='2014070800';
c = GROUP b ALL;
d = FOREACH c GENERATE COUNT(b); 
dump d;

但是,当我在传递date=20140708参数后执行时,查询将返回零结果。有谁知道为什么会这样?如果没有足够的信息告诉我,我应该测试的第一件事是什么?

1 个答案:

答案 0 :(得分:2)

您可以use the -dryrun option查看参数替换后脚本的外观。这将告诉您是否按预期进行过滤。

当参数名称中没有非法字符(如/)时,Pig似乎无法处理字符串中的参数。相反,在您的情况下,您应该能够使用CONCAT

b = FILTER a BY dt==CONCAT('$date', '00');