pig:不嵌套重命名的连接

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

我有两个数据集

A(af1, af2, af3)
 B(bf1, bf2, bf3)

当我以Pig的身份加入他们时

C = Join A by af1, B by bf1

并随后存储为json(在删除连接 predicate 列之后)

store C into 'output.son' using JsonStorage();

我把json模式看作

{"A::af1":val, "A::af2":val, ...., "B::bf2":val, ...}

有没有一种方法可以去除连接产生的不必要的(因为我已经在处理模糊性)嵌套之类的命名?
提前谢谢

b1payxdu

b1payxdu1#

我们必须迭代relation/alias c并生成所需的字段,然后存储新的别名,假设新的别名是d。

D = FOREACH C GENERATE A::af1  AS af1, A::af2 AS af2, A::af3 AS af3, B::bf2 AS bf2, B::bf3 AS bf3;

STORE D INTO 'output.son' USING JsonStorage();

更新:
如果别名a中有100个唯一的字段名,b中也有,那么join之后我们可以使用。。运算符并选择所需的列。我们甚至可以使用位置符号访问所需字段($0..$99,$101..$200)

C = JOIN A BY af1, B BY bf1;

  D = FOREACH C GENERATE af1..af100,bf2..bf100;
  STORE D INTO 'output.son' USING JsonStorage();

相关问题