过滤换柱清管器

4sup72z8  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(496)

假设我的数据

  1. row1 cats val12 val13
  2. row2 dogs val22 val23
  3. row3 cats val32 val33
  4. ...
  5. data = load 'file' AS (row:chararry, pets:charray, val2:charray, val3:charray);

筛选数据以仅保存“cats”行

  1. felines = filter data by (pets matches 'cats');

现在把“猫”改成“狮子”

  1. lions = foreach felines generate replace (pets, 'cats', 'lions');
  2. dump lions;
  3. (lions)
  4. (lions)
  5. ...

我的目标是创建新行以添加到表中

  1. newFelines = foreach lions generate rows, lions, val1, val2;
  2. Error ^^^^^
  3. "Error during parsing. Scalars can be only used with projections"

如何获得具有以下新行的集合?

  1. row1 lions val11 val12
  2. row3 lions val31 val32

蒂亚,

2w2cym1i

2w2cym1i1#

逐行:
没有“chararry”或“charray”数据类型:

  1. data = load 'file' USING PigStorage(' ') AS
  2. (row:chararray, pets:chararray, val2:chararray, val3:chararray);

提取“猫”:

  1. felines = filter data by (pets matches 'cats');

用“狮子”代替“猫”可以这样做:

  1. lions = foreach felines generate row, REPLACE(pets, 'cats', 'lions'), val2, val3;

或者像这样:

  1. lions = foreach felines generate row, 'lions', val2, val3;
展开查看全部

相关问题