将一包元组加入单个字符串中,而不使用任何自定义Pig UDF

时间:2012-07-20 00:23:15

标签: apache-pig

如何连接一个元组(例如:{(664),(823),(8),(47),(35),(27),(13),(16),(4) ,(8),(6)})使用Pig Latin的单个字符串,不依赖于编写自定义UDF?

2 个答案:

答案 0 :(得分:3)

这是一个UDF串联字符串的示例,假设每个元组中有1个项目(包含在输出中的字符串分隔符为'_'),这些字符串是包中的元组:

#!/usr/bin/python

@outputSchema("schema:chararray")
def convertBagToStr(acctBag):
    return "_".join([str(i[0]) for i in sorted(acctBag)])
猪脚本中的

register '$udf_dir/myUDF.py' using jython as funcs;

a = foreach mygroup generate funcs.convertBagToStr(mybag) as bag_str;

答案 1 :(得分:2)

只有Pig Latin才能做到这一点。根据{{​​3}},袋子是无序的元组集合。因此,尝试连接它们会产生一个模糊的结果,除非您能够通过自定义UDF指定一个排序。