在 Pig 中扁平化元组

Posted

技术标签:

【中文标题】在 Pig 中扁平化元组【英文标题】:Flattening tuples in Pig 【发布时间】:2014-06-27 22:51:41 【问题描述】:

我有以下格式的数据:

(ID,描述)

1,xyz 是东西。 Abc bcd 等等。

1,xyz 是东西。 Abc xyz 等等。

2,abc 是什么东西。 Abc xyz 等等。

我需要这种格式的输出:

身份证,字

我试过这个:

A = LOAD './data.txt' USING PigStorage(',') as (id: int, desc:chararray);

B = FOREACH A GENERATE id, FLATTEN(STRSPLIT(desc, '[,?:;\s]'));

这会产生如下输出:

1, xyz, is, something, Abc, bcd, so, on

我想要的是:

1,xyz

1,是

1,某事

等等等等。

如何在 Pig 中执行此操作(无需编写 UDF)?

PS:也试过了:

B = FOREACH A GENERATE id, FLATTEN(datafu.pig.util.TransposeTupleToBag(STRSPLIT(desc, '[.&,?:;\s]')));

【问题讨论】:

【参考方案1】:

你可以在 pig 中使用 Tokenize。请在下面找到答案。

这是输入文件

猫文件1

1,xyz 是什么东西

2,abc 是什么东西

A = 使用 PigStorage(',') 加载 'file1';

B = foreach A 生成 $0, FLATTEN(TOKENIZE($1));

转储 B

(1,xyz)

(1,是)

(1,某物)

(2,abc)

(2,是)

(2,某事)

【讨论】:

以上是关于在 Pig 中扁平化元组的主要内容,如果未能解决你的问题,请参考以下文章

扁平化包和元组的元组

使用 SwiftUI 扁平化元组视图

Python:扁平化包含来自函数的另一个元组的元组的最简单方法

如何将元组列表展平为pythonic列表[重复]

在 pandas DataFrame 中,如何使用索引将“扁平化”变量“扁平化”成新列?

在 Pandas Dataframe 中扁平化列表的更快方法