标签:
一:背景
为了方便MapReduce直接访问关系型数据库(MYSQL、Oracle等),Hadoop提供了DBInputFormat和DBOutputFormat两个类,通过DBInputFormat类把数据库表的数据读入到HDFS中,根据DBOutputFormat类把MapReduce产生的结果集导入到数据库中。
二:实现
我们以MYSQL数据库为例,先建立数据库、表以及插入数据,如下,
(1):建立数据库
create database myDB;
(2):建立数据库表
(3):插入数据
(4)编写MapReduce程序,我这里使用的版本是hadoop1.2.1,相关知识点都写在注释中了,如下:
程序运行的结果是数据库中的数据成功导入到HDFS中,如下:
注:程序运行时,会碰到一个常见的数据库远程连接错误,大致如下:
原因:创建完数据库后,需要进行授权(在本地访问一般不会出现这个问题)
解决方法就是进行授权:
另外一个常见的错误就是MYSQL驱动没有导入到hadoop/lib目录下,解决方案有两种,传统的方式我就不多说了,这里说另外一种方式:
(1):把包上传到集群上
(2):在MR程序提交job前,添加语句:
标签:
原文地址:http://www.cnblogs.com/thinkpad/p/5173723.html