我不能在猪中分裂一个chararray来生成一个元组

时间:2013-08-12 13:27:51

标签: apache-pig

在Pig脚本中,我正在操作以下形式的元组:

(a1:int,a2:chararray,a3:int)

a2的一个例子可能是:“123,232,444,223,100”(五个数字介于100和500之间,以逗号分隔)。

我想获得以下元组:

(a1:int,u1:int,u2:int,u3:int,u4:int,u5:int,a3:int)

其中u1到u5对应于a2 chararray的值。

是否可以仅使用猪功能?

我试图用Python编写UDF,如下所示:

@outputSchema("int:u1,int:u2,int:u3,int:u4,int:u5")
def mosListToTuple(list):
    u1 = list[0:3]
    u2 = list[5:8]
    u3 = list[10:13]
    u4 = list[15:18]
    u5 = list[20:23]
    return u1,u2,u3,u4,u5

但我收到错误:

ERROR 1200: <line 1, column 4>  Syntax error, unexpected symbol at or near 'u1'

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

您不需要为此编写自己的UDF:

B =
    FOREACH A
    GENERATE
        a1, 
        FLATTEN(STRSPLIT(a2, ',')) AS (u1:int,u2:int,u3:int,u4:int,u5:int),
        a3;