利用Sqoop把SqlServer数据库中的表导入导出到HDFS
网友 网易博客

为了能够和HDFS之外的数据存储库进行交互,MapReduce程序需要使用外部API来访问数据。Sqoop是一个开源的工具,它允许用户将数据从关系型数据库抽取到Hadoop中,用于进一步的处理。抽取出来的数据可以被Mapreduce程序使用。也可以被其他类似于Hive的工具使用。一旦形成分 析结果,Sqoop便可以将这些结果导回数据库,以供其他客户端使用。

Sqoop的安装

从http://archive.cloudera.com/cdh/3/上下载安装包。然后解压。在安装Sqoop之前,需要在机器上安装java和Hadoop,并且需要在系统环境变量中设置HADOOP_HOME变量:

sudo gedit /etc/environment

然后在文件中添加HADOOP_HOME变量,并使其指向系统中Hadoop的根目录。Sqoop安装包中并不包含jdbc的SqlServer驱动,所以想在HDFS和SqlServer数据库之间导入导出数据,则需要先下载jdbc的SqlServer驱动。到http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21599 上 下载jdbc驱动1033\sqljdbc_3.0.1301.101_enu.tar.gz,解压,把sqljdbc4.jar包拷贝到Sqoop安装 目录下的lib目录下,但是这个只是jdbc中SqlServer的驱动,它并不支持HDFS与SqlServer数据库之间数据的传输,还需要下载 SQL Server-Hadoop Connector。下载地址为http://www.microsoft.com/download/en/details.aspx?id=27584 , 解压得到sqoop-sqlserver-1.0目录,并在系统中添加环境变量MSSQL_CONNECTOR_HOME,让它指向sqoop- sqlserver-1.0目录。然后执行sqoop-sqlserver-1.0目录下的install.sh。这个命令会将连接的jar文件和配置文 件拷贝的Sqoop目录中。至此就可以用Sqoop连接SqlServer和HDFS了。

在使用Sqoop之前要把Hadoop的进程打开。然后切换到Sqoop目录下,就可以执行数据的导入和导出了。

例如导入:

$bin/sqoop import --connect 'jdbc:sqlserver://192.168.4.155;username=sa;password=sa;database=pi' --table=pi_item_master --target-dir /user/cloudcomputing/output -m 3

便可以把IP地址为192.168.1.123机器上的test数据库中的test表导入到HDFS上的/user/cloudcomputing/output目录下。

导出:

$bin/sqoop export --connect 'jdbc:sqlserver://192.168.1.123;username=test;password=123;database=test' --table test --export-dir /user/cloudcomputing/output

便可以把/user/cloudcomputing/output目录下的数据导入到192.168.1.123机器上的test数据库中的test数据表中。


CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢