【问题标题】:Flattening tuples in Pig在 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]')));

【问题讨论】:

    标签: hadoop mapreduce apache-pig


    【解决方案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,某事)

    【讨论】:

      猜你喜欢
      • 2020-12-04
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多