如何使用sqoop匯入匯出資料

2021-10-24 21:38:26 字數 2521 閱讀 5542

匯出sqoop,即sql to hadoop,目的是完成關係型資料庫匯入匯出到hadoop

sqoop的原理是將命令翻譯為mapreduce程式執行,mr沒有reduce階段,只有map階段

配置環境

可以在/etc/profile中配置,匯出為全域性變數或在sqoop-env.sh檔案配置

注:需提前配置hadoop_home,hive_home,hbase_home,zookeeper_home

將連線mysql的驅動(參考hive資料的儲存以及在centos7下進行mysql的安裝),拷貝到sqoop的lib目錄

測試,如果沒有配置環境變數,則進入sqoop安裝目錄下

bin/sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password 123456
\代表在shell視窗中換行

bin/sqoop import \

// 連線的url

--connect jdbc:mysql://hadoop102:3306/mydb \

// 使用者名稱

--username root \

// 密碼

--password 123456 \

// 要導哪個表的資料

--table staff \

// 將資料匯入到hdfs的哪個路徑

--target-dir /company \

// 如果目標目錄存在就刪除

--delete-target-dir \

// 匯入到hdfs上時,mysql中的字段使用\t作為分隔符

--fields-terminated-by "\t" \

// 設定幾個maptask來執行

// 是無法被匯入的!盡量選取主鍵列,數字列

--split-by id

// 只匯入id和name 列

--columns id,name \

// 只匯入復合過濾條件的行

--where 'id >= 10 and id <= 20' \

// 執行查詢的sql,講查詢的資料進行匯入,如果使用了--query,不加再用--table,--where,--columns

// 只要使用--query ,必須新增$conditons,這個條件會被sqoop自動替換為一些表示式

--query "sql"

$ bin/sqoop import \

--connect jdbc:mysql://hadoop102:3306/company \

--username root \

--password 123456 \

--table staff \

//匯入到hive

--hive-import \

//匯入到hive表中字段的分隔符

--fields-terminated-by "\t" \

// 是否以insert overwrite方式覆蓋匯入資料

--hive-overwrite \

// 要匯入的hive表的名稱,會自動幫助我們建表。建議還是在hive中手動建表,需要注意和mysql表的資料型別匹配

--hive-table staff_hive

bin/sqoop import \

--connect jdbc:mysql://hadoop102:3306/mydb \

--username root \

--password 123456 \

--table t_emp \

//如果表不存在,hbase自動建表

--hbase-create-table \

// 匯入的表名

--hbase-table "t_emp" \

// mysql的哪一列作為rowkey

--hbase-row-key "id" \

//匯入的列族名

--column-family "info" \

--split-by id

bin/sqoop export \

--connect jdbc:mysql://hadoop102:3306/company \

--username root \

--password 123456 \

//要匯出的mysql的表名

--table staff2 \

//匯出的資料在hdfs上的路徑

--export-dir /company \

// 匯出時,基於哪一列判斷資料重複

--update-key

// 匯出的資料的分隔符

--input-fields-terminated-by "\t"

Sqoop(二) Sqoop匯入 匯出資料

1.2 rdbms hive 1.3 rdbms hbase 2.匯出資料 在sqoop中,匯入 概念指 從非大資料集群 rdbms 向大資料集群 hdfs,hive,hbase 中傳輸資料,叫做 匯入,即使用import關鍵字。sqoop import connect jdbc mysql top...

sqoop匯入匯出

sqoop官方手冊位址 最近在看sqoop有些感想,就寫下來。sqoop是大資料裡面匯入匯出的乙個工具。關於import匯出 可以從mysql匯出到hdfs,hbase,hive,案例如下,這是乙個匯出到hdfs的案例 import connect jdbc mysql username root ...

sqoop匯入 匯出

全部匯入 sqoop import connect jdbc mysql hadoop01 3306 test1 username root password 1234 table students target dir user test1 delete target dir fields ter...