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