之前工作中做的是将ElasticSearch中的数据通过MapReduce分析处理后结果写入到MySQL中。那么MapReduce如何读写Mysql,网上有很多,看的真心有点乱。这里写个完整的例子供大家参考。例子描述:将mysql数据库test_yy库中t表的数据通过mapreduce复制到t2表中。主要id、name两个测试属性。完整的可运行的sample,可以到我的github(SarmiSun/hadoopsamples)上,直接拿。SarmiSun 欢迎watch和follow,大家一起学习交流!!!1Hadoop 读写 Elasticsearch
方法/步骤
1
引入hadoop-common的jar包
2
注意对照后续需要导入的包这里需要注意下,用的都是mapreduce包下面的内容。旧的API中提供包在mapred中,网上有很多文章都用的是这个的,注意区别。
3
创建对应的Table实体类实现Writable, DBWritable接口加点输出,到时候执行时看效果。
4
编写Mapper,注意VALUEOUT之前看到很多用tostring拼成Text,然后再reduce中进行字符串分割的,有很大的限制,实际中肯定会有很大问题。应该也可以直接用Table对象吧,这个还没好好研究下。
5
编写Reducer将接受到的信息写入DB
6
编写执行方法关键是用DBInputFormat、DBOutputFormatInput方法提供了两种实现。
7
最后运行下查看执行效果数据成功复制!
注意事项
完整文件下载,我的github:SamirSun/hadoopsamples
下一篇:关于优盘写保护发生错误的解决方法