sqoop 從 MySQL 匯入資料到 hdfs 中
阿新 • • 發佈:2019-01-27
MYSQL 資料匯入到 HDFS
sqoop import
--connect jdbc:mysql://192.168.66.4:3306/networkmanagement \
--username sendi \
--password 1234 \
--table people \
--columns "name,age" \
--where "age>18" \
--target-dir hdfsPeople \
--delete-target-dir \
-m 1
- –table 是要匯入HDFS中的表
- –columns 選擇要匯入的列,這裡選擇把name與age兩列匯入的HDFS中。
- –where 對資料進行過濾,只有滿足條件的才儲存到HDFS中。
- –target-dri 指定儲存在HDFS上的表名
- –delete-target-dir 表示如果HDFS表存在,則把他刪除。
- -m 說明使用多少個map進行資料遷移,如果表比較大的話,建議使用多個map,預設的map為4個
從 HDFS 匯出到 MYSQL
1、首先先在MySQL中建立表
2、重複的記錄要刪除
2、export path 指定匯出的目錄
4、–updata-key
#### 在 mysql 下建立表
create table customertest(id int,name varchar(20 ),last_mod timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
執行匯出語句
sqoop import
--connect jdbc:mysql://192.168.66.4:3306/networkmanagement?useUnicode=true&characterEncoding=utf-8" \
--username sendi \
--password 1234 \
--table people \
--columns "id,name" \
--input-fields-terminated-by ',' \
--export-dir path \
-m 1
- columns 指定匯出到 mysql 中的列
更新資料
- –updata-key
- –update-mode allowinsert 指定更新的模式為可插入,預設為 updateonly
分隔符
- input-fields-terminated-by hdfs檔案分隔符
當資料庫中字元為空時的處理
- –input-null-non-string ‘0’ 當不是字串的資料為空的時候,用 0 替換
- –input-null-string ‘string’ 當字串為空的時候,使用string 字元替換