Hadoop 重塑清管器中的数据-将行值更改为列名

Hadoop 重塑清管器中的数据-将行值更改为列名,hadoop,apache-pig,Hadoop,Apache Pig,有没有办法重塑pig中的数据 数据如下所示- id | p1 | count 1 | "Accessory" | 3 1 | "clothing" | 2 2 | "Books" | 1 我想重塑数据,使输出看起来像这样-- 有人能提出一些建议吗?如果是一套固定的产品线,下面的代码可能会有所帮助,否则您可以选择一个定制的UDF,这有助于实现目标 输入:a.csv 1|Accessory|3 1|Clothing|2 2|Books|1

有没有办法重塑pig中的数据

数据如下所示-

id | p1 | count   
1  | "Accessory" | 3    
1  | "clothing" | 2     
2  | "Books" | 1   
我想重塑数据,使输出看起来像这样--


有人能提出一些建议吗?

如果是一套固定的产品线,下面的代码可能会有所帮助,否则您可以选择一个定制的UDF,这有助于实现目标

输入:a.csv

1|Accessory|3    
1|Clothing|2     
2|Books|1   
清管器片段:

test = LOAD 'a.csv' USING PigStorage('|') AS (product_id:long,product_name:chararray,rec_cnt:long);
req_stats = FOREACH (GROUP test BY product_id) {
    accessory = FILTER test BY product_name=='Accessory';
    clothing = FILTER test BY product_name=='Clothing';
    books = FILTER test BY product_name=='Books';
    GENERATE group AS product_id, (IsEmpty(accessory)  ? '0' : BagToString(accessory.rec_cnt)) AS a_cnt, (IsEmpty(clothing)  ? '0' : BagToString(clothing.rec_cnt)) AS c_cnt, (IsEmpty(books)  ? '0' : BagToString(books.rec_cnt)) AS b_cnt;

};

DUMP req_stats;
输出:转储请求统计信息

(1,3,2,0)
(2,0,0,1)

您是否有固定的产品线?配件、服装、书籍或其通用产品?产品线是固定的,但是大多数ID只有少数产品线的计数值。如果是一组固定的产品线,请检查应答中共享的代码段,否则必须使用自定义自定义自定义项。如果是预期结果,则可以接受应答
(1,3,2,0)
(2,0,0,1)