聲明:做者原創,轉載註明出處。做者:帥氣陳吃蘋果java
wget http://mirror.bit.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz tar -zxvf sqoop-1.4.6.bin_hadoop-2.0.4.alpha.tar.gz -C /root/hadoop/ mv sqoop-1.4.6.bin_hadoop-2.0.4.alpha sqoop-1.4.6
export SQOOP_HOME=/root/hadoop/sqoop-1.4.6 export PATH = $PATH:$SQOOP_HME/bin
若正常顯示Sqoop版本信息,則安裝配置成功:mysql
[root@localhost ~ ] # sqoop version
安裝MySql後,建立測試數據庫和測試表。sql
數據庫名:testshell
表結構:point(pointId int(10) PRIMARYKEY,pointName varchar(16),pointValue int(10))數據庫
編寫Shell腳本,此處的插入語句須要根據所建立的表結構來修改:apache
#!/bin/bash i=1; MAX_INSERT_ROW_COUONT=$1; while(( $i <= $MAX_INSERT_ROW_COUNT )) do mysql -uhive -phive test -e "insert into test.point(pointId,pointName,pointValue) values($i,'point"$i"',$i);" i=(($i+1)) done exit 0
上述腳本生成測試數據速度很慢,筆者生成1000萬條數據有如懷胎十月,歡迎建議,感謝!
MySQL做爲數據源時,Sqoop須要依賴MySQL數據庫鏈接驅動包,下載地址:https://dev.mysql.com/get/Dow...vim
下載後解壓,將mysql-connector-java-5.1.45文件夾下的mysql-connector-java-5.1.44-bin.jar
包拷貝到$SQOOP_HOME/lib
目錄下便可。bash
sqoop import --connect jdbc:mysql://localhost:3306/test --username hive --password hive --table point
import:表示從傳統數據庫導入數據到 HDFS/HIVE/HBASE等;oop
--connect:創建數據庫鏈接;測試
jdbc:mysql://localhost:3306/test:使用jdbc方式鏈接mysql數據庫,數據庫名爲test;
--username:指定數據庫用戶名;
--password:指定數據庫密碼;
--table:指定表名
注意:a)HDFS輸出目錄不能已經存在;
b)沒有指定-m或者splite-by時,即沒有指定並行度時,要導入的表必須有主鍵,不然會出錯。
c)導入到指定目錄:sqoop import --connect jdbc:mysql://localhost:3306/test --username hive --password hive --table point --target-dir /directory
若是沒有指定輸出目錄,默認在/user/root/下建立一個與表名一致的子目錄做爲輸出目錄,導入操做執行後,查看HDFS中是否有導入的文件:
hdfs dfs -ls /user/root/point/
sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root --table point --hbase-table HPoint --column-family info --hbase-row-key pointId --hbase-create-table
--hbase-table:指定導入到HBase數據庫中某表;
--column-family:指定列族名;
--hbase-row-key:指定rowKey;
--hbase-create-table:表示按照參數建立HBase中的表;
最後,歡迎指正。喜歡的話,點個讚唄,請你吃蘋果。