1. 程式人生 > >利用sqoop完成資料匯入匯出

利用sqoop完成資料匯入匯出

一.安裝SQOOP後可使用如下命令列出mysql資料庫中的所有資料庫,與檢驗是否安裝成功。
     #  sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456

二. hive與mysql資料互導

    一. 使用命令範例:

     sqoop import --connect jdbc:mysql://192.168.137.1:3306/test
     --username root --password 123456 --table mytabs --fields-terminated-by
     '\t' -m 1 [--hive-import] --append --check-column 'id'  --incremental
     append --last-value 5 --where 'id>2 and id<5'

        引數詳解:

       1.--fields-terminated-by '\t',表示將資料匯入到hadoop中列記錄之間的間隔符,預設符號為英文逗號。這裡通常使用製表符\t來間隔資料,避免資料再次從HDFS到入到關係資料庫時引起分割混亂
        2.-m 1,是--num-mappers的縮寫,表示指定MapReduce的個數為1個(預設會自動開啟多個),sqoop轉化的MR程 序不包含reduce
        3.--append,表示資料匯入到hadoop的方式為追加,否則不允許重複匯入
        4.--check-column '主鍵列名' --incremental append --last-value 5,表示資料為增量匯入,根據--last-value的值來判斷,有大於這個值的記錄則執行匯入,否則不執行匯入操作
        5.表示資料為增量匯入,根據--last-value的值來判斷, 有大於這個值的記錄則執行匯入,否則不執行匯入操作
        6.--hive-import,表示將資料匯入到Hive中;
        7.--where '',資料篩選條件
        8.-e 或--query 'select * from table where id>5 and $CONDITIONS',自定義匯入資料的sql語句。使用自定義sql語句 需要注意:
           ① 使用了自定義sql就不能指定--table;
           ② 自定義sql語句的where條件中必須包含字串"$CONDITIONS",$CONDITIONS是一個變數,用於給多個map任務劃分任務範 圍;
           ③ 使用自定義sql時,如果通過引數-m指定多個map任務,由於自定義sql中可能存在多表查詢,因此必須使用引數“--split-by 表名.欄位名”指定多個map任務分割資料的根據欄位,如--split-by users.id;
        9. --target-dir,顯示指定資料匯入到HDFS中的位置,預設儲存路徑為:/user/{當前使用者}/{表名}/表資料檔案,
           如果匯入時需要將已存在的HDFS檔案刪除,可使用--delete-target-dir

    二. hive資料匯入匯出資料到mysql

     sqoop export -connect jdbc:mysql://localhost:3306/sqoop
     -username root -password hadoop -table hive_student -export-dir
     /hive/student/student --input-fields-terminated-by '\t'
    三.mysql資料庫資料匯入hive中
     sqoop import --connect jdbc:mysql://localhost:3306/sqoop
     -username root -password hadoop -table test -hive-import -m 1
三.hbase與關係型資料庫資料互導
    從Mysql匯入到Hbase中
    引數說明:
    test 為mysql中要傳入到hbase表中的表名。
    mysql_sqoop_test 傳入hbase中的表名
     --column-family hbase表中的列族
    --hbase-row-key 在hbase中那一列作為rowkey
    使用範例:
   sqoop import --connect jdbc:mysql://10.120.10.11:3306/sqoop
   --username sqoop --password sqoop --table test --hbase-create-table
   --hbase-table mysql_sqoop_test --column-family info --hbase-row-key id -m 1