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

标签 hadoop grid apache-pig

我有一个类似下面的 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 参数后执行时,查询将返回零结果。有谁知道为什么会这样?如果没有足够的信息可以说明,我应该测试的第一件事是什么?

最佳答案

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

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

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

关于hadoop - PIG - 将字符串连接到参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24811148/

相关文章:

jquery - Bootstrap 网格系统 : How to change width for specific elements only?

apache-pig - pig 中的自交叉连接被忽略

hadoop - 在Hbase中使用WAL进行恢复

Java:2D 世界碰撞检测代码错误

html - 网格元素未使用 minmax() 函数正确包装

java - pig : How to pass relationship to Java UDF as argument?

java - Apache Pig - 具有多个匹配条件的 MATCHES

hadoop - 使用 Hive QL 按时间间隔对时间序列进行采样并计算跳跃

java - 按键合并制表符分隔的文件

apache-spark - 跨集群分布分区