合并两个袋子并从猪中的第一个袋子中获取所有字段

Merge two bag and get all the field from first bag in pig

我是 PIG 脚本的新手。在这个问题上需要一些帮助。

我在 pig 中有两套包,从那里我想从第一个包中获取所有字段,如果第二个包具有相同字段的数据,则覆盖第一个包的数据

列列表是动态的(列可能随时添加或删除)。 在集合 b 中,我们可能会在另一个字段中获取当前为空白的数据,如果是这样,那么我们需要用集合 b

中可用的数据覆盖集合 a

列 - uniqueid,catagory,b,c,d,e,f,region,g,h,date,direction,indicator

EG:

all_data= COGROUP a by (uniqueid), b by (uniqueid);

输出:

(1,{(1,test,,,,,,,,city,,,,,2020-06-08T18:31:09.000Z,west,,,,,,,,,,,,,A)},{(1,,,,,,,,,,,,,,2020-09-08T19:31:09.000Z,,,,,,,,,,,,,,N)})
    
(2,{(2,test2,,,,,,,,dist,,,,,2020-08-02T13:06:16.000Z,east,,,,,,,,,,,,A)},{(2,,,,,,,,,,,,,,2020-09-08T18:31:09.000Z,,,,,,,,,,,,,,N)})

预期结果:

(1,test,,,,,,,,city,,,,,2020-09-08T19:31:09.000Z,west,,,,,,,,,,,,,N)
(2,test2,,,,,,,,dist,,,,,2020-09-08T18:31:09.000Z,east,,,,,,,,,,,,N)

我能够通过以下

实现预期的输出

final = FOREACH all_data GENERATE flatten($1),flatten($2.(region)) 作为区域,flatten($2.(indicator)) 作为指标;