Hadoop/级联:如何使结果平坦化?

Hadoop/级联:如何使结果平坦化?,hadoop,cascading,Hadoop,Cascading,我不知道normalize是否是一个正确的词,如果你知道,请用正确的词编辑我的问题 我有非结构化数据,我已经处理过了,结果得到了如下数据 id | group | count ------------------- 1 | A | 32 1 | B | 1213 1 | C | 12 2 | B | 12 2 | C | 1 3 | A | 32 3 | B | 1213 3 | C | 12 我可以继续处理数据并

我不知道normalize是否是一个正确的词,如果你知道,请用正确的词编辑我的问题

我有非结构化数据,我已经处理过了,结果得到了如下数据

id | group | count
-------------------
1  |   A   | 32
1  |   B   | 1213
1  |   C   | 12
2  |   B   | 12
2  |   C   | 1
3  |   A   | 32
3  |   B   | 1213
3  |   C   | 12
我可以继续处理数据并使其结果如下所示吗

id | A  |  B   | C
-------------------
1  | 32 | 1213 |12
3  | 32 | 1213 |12
2  | 0  |  12  | 1
编辑:

我可以使用下面这样的方法使数据几乎符合我的要求:

Pipe conclusionPipe = new Pipe("conclusionPipe",countPipe);
conclusionPipe = new GroupBy(conclusionPipe, new Fields("id"), new Fields("group"));
conclusionPipe = new Every(conclusionPipe, new Fields("group", "count"),new CustomAggregator(), Fields.RESULTS);
以及CustomAggregator类:

其中声明了头

结果如下:

Tap outTap = new Hfs(new TextDelimited(true, "\t"), "out");
---empty line----
1  | 32 | 1213 |12
3  | 32 | 1213 |12
2  | 12 |   1 
问题是,每一行都不知道标题是什么,每一行可能有不同的标题。有没有办法让每一行知道每一列的标题?使没有特定标题的每一行的值都为零也是可以的。但最好使用相同的标题对每行进行分组,例如:

id | A  |   B  | C
1  | 32 | 1213 |12
3  | 32 | 1213 |12
id | B  |   C
2  | 12 |   1 

谢谢

对。您可以使用MapReduce或其他工具来完成此操作??您可能想看看管道和级联教程。@addicted20015@soulcheck我目前正在使用级联。这也是过程的一部分。据我所知,GroupBy将根据groupFields对输入进行分组,并且它只能处理groupFields。在我的例子中,groupfield将是id,不是吗?什么样的聚合器可以将输入转换为指定的结果?@dieend是的,在您的情况下,groupFields将是id,sortFields将是“group”。然后,您可以使用自己的自定义聚合器将分组和排序的值放入一个元组。@soulcheck我已经更新了我的问题,您可以看一下吗?
id | A  |   B  | C
1  | 32 | 1213 |12
3  | 32 | 1213 |12
id | B  |   C
2  | 12 |   1