如何连接一个元组(例如:{(664),(823),(8),(47),(35),(27),(13),(16),(4) ,(8),(6)})使用Pig Latin的单个字符串,不依赖于编写自定义UDF?
答案 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指定一个排序。