1. 程式人生 > >Sqoop的安裝及簡單使用

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

  1. 匯入匯出的事務是以Mapper任務為單位。