sqoop的增量匯入和split by

2021-09-22 18:20:29 字數 1876 閱讀 4036

sqoop是hadoop和關聯式資料庫伺服器之間傳送資料的一種工具。,底層執行的mr

bin/sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password hadoop
bin/sqoop import \

--connect jdbc:mysql://node-1:3306/userdb \

--username root \

--password hadoop \

--target-dir /sqoopresult \

--table emp --m 1

將關係型資料的表結構複製到hive中

bin/sqoop create-hive-table \

--connect jdbc:mysql://node-01:3306/userdb \

--table emp_add \

--username root \

--password 123456 \

--hive-table dbbank.emp_add_sp

從關聯式資料庫匯入檔案到hive中

bin/sqoop import \

--connect jdbc:mysql://node-1:3306/userdb \

--username root \

--password hadoop \

--table emp_add \

--hive-table itcast.emp_add_sp \

--hive-import \

--m 1

按條件id匯入,指定匯入的位置

/emp_data/

1201,gopal,manager,50000,tp

1202,manisha,preader,50000,tp

1203,kalil,php dev,30000,ac

1204,prasanth,php dev,30000,ac

1205,kranthi,admin,20000,tp

1206,satishp,grpdes,20000,gr

首先需要手動建立mysql中的目標表:

mysql> use userdb;

mysql> create table employee (

id int not null primary key,

name varchar(20),

deg varchar(20),

salary int,

dept varchar(10));

然後執行匯出命令

bin/sqoop export \

--connect jdbc:mysql://node-1:3306/userdb \

--username root \

--password hadoop \

--table employee \

--export-dir /emp_data/

–export-dir:指定hdfs輸入檔案的目錄

–input-fields-terminated-by:字段之間分隔符

–input-lines-terminated-by:行分隔符

- split-by

根據split-by欄位來保證多個maptask資料不會重複

預設是主鍵,如果主鍵沒有,則只能指定乙個maptasks

根據(max-min)\maptask對資料進行切分,所以主鍵不均勻會造成資料傾斜

如果指定的字段有null值,該行資料不會匯入

sqoop 增量匯入

在隨著系統的執行,每天都會產生新的資料,在進行資料匯入的時候,由於之前已經匯入過資料,所以在產生新的資料的時候,就可以直接在之前導過的資料的基礎上繼續匯入資料,沒有必要之前的所有資料都重新匯入一遍 增量匯入資料的使用 以上為增量匯入的引數check column 檢查列,檢查資料庫表中的索引列,一般...

sqoop增量匯入

執行以下指令先將我們之前的資料匯入 sqoop import connect jdbc mysql master 3306 test username hive password 123456 table customer m 1使用hdfs dfs cat檢視生成的資料檔案,發現資料已經匯入.然後...

Sqoop的全量匯入和增量匯入

增量匯入 2.lastmodify方式 基於時間列 sqoop import connect jdbc mysql username scfl password scfl123 query select from test table where conditions target dir user...