Hadoop,如何规范化多列数据?
我有一个像这样的.txt文件 1036177 19459.7356 17380.3761 18084.1440 1045709 19674.245717694.8674 18700.0120 1140443 19772.0645 17760.0904 19456.7521 其中第一列表示键,其他列表示值。 我想规范化(最小-最大)每一列,然后总结列Hadoop,如何规范化多列数据?,hadoop,mapreduce,normalization,Hadoop,Mapreduce,Normalization,我有一个像这样的.txt文件 1036177 19459.7356 17380.3761 18084.1440 1045709 19674.245717694.8674 18700.0120 1140443 19772.0645 17760.0904 19456.7521 其中第一列表示键,其他列表示值。 我想规范化(最小-最大)每一列,然后总结列 有人可以就如何在MapReduce中实现这一点给我一些建议?从算法角度来看,您需要: 制图员 按输入行的分隔符(空格?)对其进行分析/标记 使用
有人可以就如何在MapReduce中实现这一点给我一些建议?从算法角度来看,您需要:
- 制图员
- 按输入行的分隔符(空格?)对其进行分析/标记
- 使用文本对象封装键字段
- 创建自定义值类来封装其他字段,或者使用
包装器ArrayWritable
- 从映射器输出此键/值
- 减速器
- 所有值都将由同一个键分组,因此这里您只需要处理每个输入值,并计算每列的最小值、最大值和总和
- 最后输出结果
非常感谢您的评论,非常有帮助!;)
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');