作者:游走的小张 | 来源:互联网 | 2023-01-20 09:28
运行环境centos5.6hadoophivesqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具,手册地址:ht
运行环境 centos 5.6 hadoop hive
sqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具,手册地址:http://sqoop.apache.org/docs/1.4.1-incubating/SqoopUserGuide.html
在使用过程中可能遇到的问题:
- sqoop依赖zookeeper,所以必须配置ZOOKEEPER_HOME到环境变量中。
- sqoop-1.2.0-CDH3B4依赖hadoop-core-0.20.2-CDH3B4.jar,所以你需要下载hadoop-0.20.2-CDH3B4.tar.gz,解压缩后将hadoop-0.20.2-CDH3B4/hadoop-core-0.20.2-CDH3B4.jar复制到sqoop-1.2.0-CDH3B4/lib中。
1 首先安装sqoop,如果你使用的是clouder分发版的话就非常简单
# yum install sqoop
如果用官方版本的话
# cd /etc/yum.repos.d
# wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo
# yum -y install sqoop
sqoop就会安装完成
2 使用sqoop
首先将mysql-connector-java-5.1.16-bin.jar文件复制到/usr/lib/sqoop/lib文件夹下
3 导入导出数据库
1)列出mysql数据库中的所有数据库命令
# sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456
2)连接mysql并列出数据库中的表命令
# sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username root --password 123456
命令中的test为mysql数据库中的test数据库名称 username password分别为mysql数据库的用户密码
3)将关系型数据的表结构复制到hive中
sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table username --username root --password 123456 --hive-table test
其中 --table username为mysql中的数据库test中的表 --hive-table test 为hive中新建的表名称
4)从关系数据库导入文件到hive中(可以是步骤3)中已复制过去的表结构,也可以是未复制的,这样就会新建一个表)
sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password mysql-password --table t1 --hive-table t1 --hive-import
可能遇到的问题:
$ sqoop create-hive-table --connect jdbc:mysql://localhost:3306/dev--username root --password 123456 --table person --hive-table person
……
INFO hive.HiveImport: FAILED: Error in metadata: MetaException(message:Got exception: java.io.FileNotFoundException File file:/user/hive/warehouse/person does not exist.)
……
解决方法:
hadoop fs -mkdir /user/hive/warehouse/
hadoop fs -chown username user/hive/warehouse/
参考文献:利用sqoop将hive数据导入导出数据到mysql
Sqoop User Guide (v1.4.1-incubating)