我在PigLatin中遇到问题
我有一段Pig代码,它会调用带引号的字符串
data = LOAD '$data' AS (...);
a = some_macro(data,'-9999 AS KEY');
宏是这样的:
DEFINE some_macro(data, string) RETURNS results {
grp = GROUP $data ALL;
$result = FOREACH grp {
//...logic and logics
GENERATE $string, //...other fields
...;
}
}
对于字符串“-9999 AS KEY”,似乎Pig 0.10无法正常工作,那么我尝试“'-9999'AS KEY”,它再也无法工作了。
所以任何人都有解决方案吗?我只想要一个灵活的KEY名称。
答案 0 :(得分:2)
请尝试GENERATE '$string', //...other logic
,即将$string
放在单引号中。我只能用猪0.9.1测试,但它适用于我。
some_macro(data,'-9999 AS KEY');
是正确的。
但是,对于字符串中的单引号,这不起作用。
答案 1 :(得分:0)
如果要传递带引号的字符串,请首先修改Fred描述的脚本,并在传递参数时使用引号的Unicode等效项,例如:
a = some_macro(data,'\\u0022-9999 AS KEY\\u0022'); // "-9999 AS KEY"
答案 2 :(得分:0)
好的,我放弃了,Pig解析器引擎无法接受单个配额或宏中的减号' - '。
对我来说有一个解决方案,使用驱动程序代码替换猪文件中的一些存根。
实际上猪应该这样做,但我不知道它为什么不在宏观中。