为了能够和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。下载地址为@L_419_2@ ,解压得到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.1.123;username=test;password=123;database=test' --table=test --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数据表中。
总结以上是内存溢出为你收集整理的利用Sqoop把SqlServer数据库中的表导入导出到HDFS全部内容,希望文章能够帮你解决利用Sqoop把SqlServer数据库中的表导入导出到HDFS所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)