在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'
有什么想法吗?
谢谢。
答案 0 :(得分:3)
您不需要为此编写自己的UDF:
B =
FOREACH A
GENERATE
a1,
FLATTEN(STRSPLIT(a2, ',')) AS (u1:int,u2:int,u3:int,u4:int,u5:int),
a3;