从Hadoop Reducer向MySQL写入数据

4
我正在尝试使用Hadoop Map-Reduce,经过测试,我能够将Reducer的输出存储到HBase中。然而,我想将数据写入MySQL数据库,而不是HBase。Mappers仍将从HBase读取其输入数据。我找到了这个方法,但它要求在输入和输出时都使用MySQL,而我只需要在输出时使用MySQL。此外,上述link使用了一些已弃用的org.apache.hadoop.mapred包中的类,现在有一个新的org.apache.hadoop.mapreduce包可用,但我目前无法找到任何使用此新包的教程。
1个回答

1
我找到了这个,但它要求在输入和输出时都使用MySQL,而我只需要在输出时使用。
InputFormat(DBInputFormat)与OutputFormat(DBOutputFormat)是独立的。应该可以在Mapper中从HBase读取并在Reducer中写入DB。
使用新的MR API设置Job#setInputFormat和Job#setOutputFormat,使用旧的MR API将JobConf#setInputFormat和JobConf#setOutputFormat适当地设置为所需的输入/输出格式。这两种格式不需要相同。如果需要,也应该可以在Mapper中从XML中读取并在Reducer中写入队列。
此外,上面的链接使用了一些来自org.apache.hadoop.mapred包的已弃用类,现在有一个新的包org.apache.hadoop.mapreduce可用,但是我还没有找到任何使用这个新包的教程。

如果您对旧版API感到熟悉,请继续使用它。新旧API之间的功能差异并不大。旧版API和新版API都有两种DBInputFormat。请确保不要将旧版/新版InputFormats与旧版/新版MR API混合使用。

这里有一个新API的教程


我也曾经这样想,并使用了新的API。然而,在DBConfiguration类的某个点上,我遇到了NPE问题。因此,我正在寻求适当使用DBInputFormat、DBConfiguration和DBOutputFormat的方法。 - vikas
1
感谢您提供的最后一个链接。通过阅读该 教程 上的评论,我找到了我的问题所在。该教程作者在第一篇评论中的回复解决了我的问题。 - vikas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接