運行環境 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/