gpt4 book ai didi

hadoop - 使用hadoop计算直方图

转载 作者:行者123 更新时间:2023-12-02 21:35:26 26 4
gpt4 key购买 nike

我有一个整数的 csv 文件,它编码图像的 (r,g,b,a) 值,我想为 r、g、b 和 a 中的每一个计算 4 个直方图。我可以在 Hadoop 中编写一个 map reduce 作业来做到这一点吗?

例如给定的输入文件:

1,2,3,4,1,2,3,4

我想让直方图输出为:
r[1] = 2   r[i] = 0 for all other i's
g[2] = 2 g[i] = 0 for all other i's
b[3] = 2 b[i] = 0 for all other i's
a[4] = 2 a[i] = 0 for all other i's

实际的输出文件是另一个 csv 文件,应该如下所示:
0, 2, (253 0's for red), 0, 0, 2, (252 0's for green), 0, 0, 2, (251 0's   for blue), 0, 0, 0, 0, 2, (250 0's for alpha)

最佳答案

你当然可以。

  • 在映射器中首先解析输入以识别 channel 。
  • 使用 channel 作为键(r,g,b,a),幅度作为值。在您的示例中:(r,1),(g,2)...(a,4)。
  • 在 reducer 中创建长度为 255 的数组(每个 channel 一个),初始化为零。
  • 对于每个输入,将与幅度相关的单元格增加一个(在适当的数组中)
  • 在输出中写入每个数组的值。在 清理 reducer 的方法。

  • 如果您使用 4 个 reducer 并创建一个分区器,将每个 channel 发送到不同的 reducer ,那么在每个 reducer 中您只需要创建一个数组,并且在输出中您将在不同的文件中获得每个直方图。而不是使用 channel 的字母,您可以将它们编码为 1,2,3,4 并使用键选择 reducer 。或者只使用一个 reducer,您需要生成四个数组或一个 4 X 255 矩阵并将 4 个直方图写入唯一文件。

    关于hadoop - 使用hadoop计算直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32676393/

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