我有一个类似于以下内容的猪脚本:
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
参数后执行时,查询将返回零结果。有谁知道为什么会这样?如果没有足够的信息告诉我,我应该测试的第一件事是什么?
答案 0 :(得分:2)
您可以use the -dryrun
option查看参数替换后脚本的外观。这将告诉您是否按预期进行过滤。
当参数名称中没有非法字符(如/
)时,Pig似乎无法处理字符串中的参数。相反,在您的情况下,您应该能够使用CONCAT
:
b = FILTER a BY dt==CONCAT('$date', '00');