如何在Pig Latin中添加带引号字符串的参数?

时间:2012-12-13 10:11:48

标签: hadoop bigdata apache-pig

我在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名称。

3 个答案:

答案 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解析器引擎无法接受单个配额或宏中的减号' - '。

对我来说有一个解决方案,使用驱动程序代码替换猪文件中的一些存根。

实际上猪应该这样做,但我不知道它为什么不在宏观中。