sqoop 完成與關係型數據庫的互導

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

二. hive與mysql數據互導sql

    一. 使用命令範例:數據庫

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

        參數詳解:app

       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-diroop

    二. hive數據導入導出數據到mysql hadoop

  1. sqoop export -connect jdbc:mysql://localhost:3306/sqoop  
  2. -username root -password hadoop -table hive_student -export-dir  
  3. /hive/student/student --input-fields-terminated-by '\t'  

    三.mysql數據庫數據導入hive中rem

  1. sqoop import --connect jdbc:mysql://localhost:3306/sqoop  
  2. -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
    使用範例:字符串

  1. sqoop import --connect jdbc:mysql://10.120.10.11:3306/sqoop  
  2. --username sqoop --password sqoop --table test --hbase-create-table  
  3. --hbase-table mysql_sqoop_test --column-family info --hbase-row-key id -m 1  
相關文章
相關標籤/搜索