Hadoop 重塑清管器中的数据-将行值更改为列名
有没有办法重塑pig中的数据 数据如下所示-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
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)