Sqoop是用來實現結構型數據(如關係數據庫)和Hadoop之間進行數據遷移的工具。它充分利用了MapReduce的並行特點以批處理的方式加快數據的傳輸,同時也藉助MapReduce實現了容錯。
一、sqoop下載
下載地址http://mirrors.shu.edu.cn/apache/sqoop/
下載sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
二、解壓配置環境變量
將下載的sqoop傳到linux中解壓,在.bashrc中配置環境變量
三、修改配置文件
到sqoop中的conf中,複製sqoop-env-template.sh
cp sqoop-env-template.sh sqoop-env.sh
修改sqoop-env.sh的配置文件
到sqoop的bin的configure-sqoop中,註釋掉下面的代碼
四、查看是否安裝成功
sqoop version
五、將mysql驅動複製到sqoop的lib目錄
六、Sqoop的操作命令
1、用sqoop將mysql中的表數據導入HDFS中
sqoop import --connectjdbc:mysql://你的數據庫ip/數據庫名 --username root --password 數據庫密碼 --table 表名 --target-dir '要傳HDFS中的路徑' --m 1
--driver com.mysql.jdbc.Driver
例如:我要將mysql中wordpress數據庫中的wp_terms表中的數據導入到HDFS中,–m表示MR進程數
sqoop import --connect jdbc:mysql://39.108.229.164:3306/wordpress --username root -password 123456 --table wp_terms --target-dir '/sqoop' --m 1 --driver com.mysql.jdbc.Driver
如果執行上面的命令出現下面的錯誤
是因爲沒有將mysql的驅動複製到lib中
等待MR作業完成
如果想要將整個數據庫中的表全部導入到hdfs上使用import-all-tables命令
sqoop import-all-tables --connect jdbc:mysql://39.108.229.164:3306/wordpress --username root -password 123456 --target-dir '/sqoop' --m 1 --driver com.mysql.jdbc.Driver
如果想要指定所需的列:–columns
sqoop import --connect jdbc:mysql://39.108.229.164:3306/wordpress --username root -password 123456 --table wp_terms --columns '數據名,數據名' --driver com.mysql.jdbc.Driver
2、用sqoop將MySQL中表的數據傳到Hive中
加上–hive-import
sqoop import –hive-import –connect jdbc:mysql://39.108.229.164:3306/wordpress –username root -password 123456 –table wp_terms –columns ‘數據名,數據名’ –driver com.mysql.jdbc.Driver –hive-table hi
–hive-table hive表名:表示將mysql中的數據導入到hive表名中
–where ‘導入條件’ :可以選擇性導入表內容
–query ‘查詢語句’:將查詢的語句導入
3、用sqoop將Hive中的數據導出
使用export
sqoop export --connect jdbc:mysql://39.108.229.164:3306/wordpress --username root -password 123456 --table wp_te