gpt4 book ai didi

hadoop - 在 Pig 中,将袋子压平成一行

转载 作者:可可西里 更新时间:2023-11-01 14:42:52 25 4
gpt4 key购买 nike

在我的 Pig 脚本 (0.9.2) 中,我的最终输出如下所示:

final: {email: chararray,{(name: chararray,percent: double)}}

对于每个电子邮件地址,我有最多 3 个姓名和分数。所以,输出看起来像这样:

joe@smith.com {(Joe Smith, 0.5),(Joseph, 0.1), (Joey, 0.1)}

我真正想做的是将其扁平化为带制表符的分隔值(没有括号或大括号),以便像这样更容易地拉入 MySQL 表:

joe@smith.com 乔·史密斯 0.5 约瑟夫 0.1 乔伊 0.1

如何在 Pig 中完成此操作?还是我必须编写自定义 UDF?

最佳答案

您需要为此编写自定义 udf。您可以使用像 Python 这样的语言轻松地做到这一点。只需执行以下操作:

@outputSchema("flat_bag:bag{}")
def flattenBag(bag):
flat_bag = [item for tup in bag for item in tup]
return flat_bag

只需将其放入 .py 文件中并像这样加载它:

REGISTER '/path/to/udfs.py' using jython as py_funcs;

然后像这样使用它:

final1 = FOREACH final GENERATE email, py_funcs.flattenBag($1);

关于hadoop - 在 Pig 中,将袋子压平成一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16409310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com