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(",")
分隔数据
尝试制定一个不同于普通字数统计示例的 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(",")
分隔数据