Sqoop的安裝及簡單使用
SQOOP是用於對資料進行匯入匯出的。
(1)把MySQL、Oracle等資料庫中的資料匯入到HDFS、Hive、HBase中
(2)把HDFS、Hive、HBase中的資料匯出到MySQL、Oracle等資料庫中
SQOOP的安裝(在hadoop0上)
解壓縮
tar -zxvf sqoop…
重新命名
mv sqoop… sqoop
設定環境變數
vi /etc/profile
export SQOOP_HOME=/usr/local/sqoop
export PATH=.:$SQOOP_HOME/bin…
環境變數設定好了以後,執行source /etc/profile
將MySQL驅動複製到/usr/local/sqoop/lib/目錄下:
cp /usr/local/hive/lib/mysql-connector-java-5.1.10.jar /usr/local/sqoop/lib/
1.把資料從mysql匯入到hdfs(預設是/user/)中
sqoop ##sqoop命令
import ##表示匯入
–connect jdbc:mysql://ip:3306/sqoop ##告訴jdbc,連線mysql的url
–username root ##連線mysql的使用者名稱
–password admin ##連線mysql的密碼
–table mysql1 ##從mysql匯出的表名稱
–fields-terminated-by ‘\t’ ##指定輸出檔案中的行的欄位分隔符
-m 1 ##複製過程使用1個map作業
–hive-import ##把mysql表資料複製到hive空間中。如果不使用該選項,意味著複製到hdfs中
sqoop import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by ‘\t’ -m 1 --append --hive-import
sqoop import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by ‘\t’ --null-string ‘**’ -m 1 --append --hive-import
–null-string '’ 表示對於null值,使用代替。預設顯示null。
–fields-terminated-by ‘\t’ 指定輸出的列分隔符
–lines-terminated-by ‘\n’ 指定輸出的行分隔符
–append 追加資料到HDFS原始檔中。
-m 表示啟動的Mapper任務數量。預設是4個。
sqoop import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by ‘\t’ --null-string ‘**’ -m 1 --append --hive-import --check-column ‘TBL_ID’ --incremental append --last-value 6
增量匯入模式:
–check-column ‘列名’ 檢查哪些列作為增加匯入的依據
–incremental (append或lastmodified)其中,append是根據是否追加了指定行來判斷的,lastmodified是根據值是否改變來判斷的
–last-value 上次的值是多少
在表中增加一個‘TBL_ID’ 7,然後在匯入,就會發現有資料在匯入。
2.把資料從hdfs匯出到mysql中(同一個匯出操作可重複執行,會匯出很多一樣的資料)
sqoop
export ##表示資料從hive複製到mysql中
–connect jdbc:mysql://ip:3306/sqoop
–username root
–password admin
–table mysql2 ##mysql中的表,即將被匯入的表名稱
–export-dir ‘/user/root/warehouse/mysql1’ ##hive中被匯出的檔案目錄
–fields-terminated-by ‘\t’ ##hive中被匯出的檔案欄位的分隔符
注意:mysql2必須存在
先在hive下建立一個空表ids(id int)—直接在GUI工具裡建立即可,建立一個/ids/id(必須建立一個目錄,然後將ids中的資料上傳到id中,因為匯出只能按照目錄匯出),上傳到HDFS中。將HDFS中的ids到處到mysql中
hadoop fs -put /root/id /ids/id
sqoop export --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table ids --fields-terminated-by ‘\t’ --export-dir ‘/ids’
3.設定為作業,執行作業
sqoop job --create myjob – import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by ‘\t’ --null-string ‘**’ -m 1 --append --hive-import
檢視建立的job:
sqoop job --list
執行job:(要輸入密碼admin,可以在sqoop-site.xml中開啟儲存密碼的部分,就可以不用輸入密碼了)
sqoop job --exec myjob
刪除job:
sqoop job --delete myjob
- 匯入匯出的事務是以Mapper任務為單位。