如何连接一袋元组(例如:{(664),(823),(8),(47),(35),(27),(13),(16),(4),(8 ),(6)}) 用 Pig Latin 转换成一个不依赖于编写自定义 UDF 的字符串?
问问题
3015 次
2 回答
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;
于 2014-03-09T11:14:04.247 回答
2
仅在 Pig Latin 中无法做到这一点。根据Programming Pig的说法,包是元组的无序集合。因此,除非您能够指定排序,否则尝试将它们连接起来会产生模棱两可的结果——这可以通过自定义 UDF 来实现。
于 2012-07-27T01:09:57.943 回答