gpt4 book ai didi

在 Pig 中旋转

转载 作者:行者123 更新时间:2023-12-01 13:32:15 25 4
gpt4 key购买 nike

这与Pivot table with Apache Pig中的问题有关.我有输入数据作为

Id    Name     Value 
1 Column1 Row11
1 Column2 Row12
1 Column3 Row13
2 Column1 Row21
2 Column2 Row22
2 Column3 Row23

并希望旋转并获得输出为

Id    Column1 Column2 Column3 
1 Row11 Row12 Row13
2 Row21 Row22 Row23

请告诉我如何在 Pig 中执行此操作。

最佳答案

没有 UDF 的最简单方法是对 Id 进行分组,然后在嵌套的 foreach 中为每个列名称选择行,然后在生成中加入它们。查看脚本:

inpt = load '~/rows_to_cols.txt' as (Id : chararray, Name : chararray, Value: chararray);
grp = group inpt by Id;
maps = foreach grp {
col1 = filter inpt by Name == 'Column1';
col2 = filter inpt by Name == 'Column2';
col3 = filter inpt by Name == 'Column3';
generate flatten(group) as Id, flatten(col1.Value) as Column1, flatten(col2.Value) as Column2, flatten(col3.Value) as Column3;
};

输出:

(1,Row11,Row12,Row13)
(2,Row21,Row22,Row23)

另一种选择是编写一个将 bag{name, value} 转换为 map[] 的 UDF,而不是通过使用列名作为键来获取值(例如 vals#'Column1')。

关于在 Pig 中旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11578815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com