Hadoop 作业制定,将 ArrayList<String> 传递给 Mapper()

Hadoop job formulation, passing ArrayList<String> to Mapper()

尝试制定一个不同于普通字数统计示例的 Hadoop 作业。我的输入数据的形式是:

makePush,1964
makePush,459
makePush,357
opAdd,2151
opAdd,257
opStop,135

我想将这些传递给 Mapper(),然后传递给 Reducer() 函数,但我在规范方面遇到了问题,即

Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>

那么,例如,opAdd 将是 KEYIN,而 257 将是 VALUEIN。随后所有 opAdd 的总和将是 KEYOUT,相关数字的总和将是 VALUEOUT,这是有道理的不是吗?

但是,如何以编程方式实现呢?在我看来,它在理论上与字数统计示例并没有太大不同。

for example, opAdd would be a KEYIN, and 257 would be a VALUEIN

不,Key 将是一个 LongWritable,它是文件中的偏移标记,用于指定当前 map 任务正在读取文件的位置。

值将是文本,即 opAdd,257 的整行,您将 toString().split(",") 分隔数据