我有一个pig问题,涉及到将包转换为列,详细信息如下:
(267720, {(201607),(201606),(201605)}, {(1),(3),(0)})
(806571, {(201607),(201606),(201605)}, {(28),(76),(75)})
我想把它转换成:
266720 201607 1
266720 201606 3
266720 201605 0
806571 201607 28
806571 201606 76
806571 201605 75
我试过:
JG3 = FOREACH JG2 GENERATE company_id, flatten(date) as date, Flatten(new_hire) as newhire;
但无法实现日期和newhire之间的精确匹配,会出现重复日期。
有人知道我该怎么做吗?提前谢谢!
2条答案
按热度按时间jvlzgdj91#
使用tobag()
8nuwlpux2#
你这样做的方式将创建笛卡尔产品的日期和新的雇用列。如果您可以控制这些数据-在创建行李之前进行Map。如果没有,那么您必须编写udf来生成这个一对一Map。