hadoop,如何规范化多列数据?

gojuced7  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(465)

我有一个像这样的.txt文件
1036177 19459.7356 17380.3761 18084.1440
1045709 19674.2457 17694.8674 18700.0120
1140443 19772.0645 17760.0904 19456.7521
其中第一列表示键,其他列表示值。我想规格化(最小-最大)每列,然后总结列。
有人可以给我一些关于如何在mapreduce中这样做的建议吗?

7fyelxc5

7fyelxc51#

从算法Angular 来看,您需要:
制图器
通过分隔符(空格?)解析/标记每个输入行
使用文本对象封装键字段
创建一个自定义值类来封装其他字段,或者使用 ArrayWritable Package 器
从Map器输出这个键/值
减速机
所有值都将按同一键分组,因此在这里您只需处理每个输入值,并计算每列的最小值、最大值和总和
最终输出结果
您可能想看看如何使用apache pig,这将使此任务更容易(未经测试):

grunt> A = LOAD '/path/to/data.txt' USING PigStorage(' ') 
           AS (key, fld1:float, fld2:float, fld3:float);
grunt> GRP = GROUP A BY key;
grunt> B = FOREACH GRP GENERATE $0, MIN(fld1), MAX(fld1), SUM(fld1), 
                                    MIN(fld2), MAX(fld2), SUM(fld2), 
                                    MIN(fld3), MAX(fld3), SUM(fld3);
grunt> STORE B INTO '/path/to/output' USING PigStorage('\t', '-schema');

相关问题