3

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

4

2 回答 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 回答