Sqoop知識點(二) Sqoop匯入匯出

2021-10-08 17:40:30 字數 4194 閱讀 7957

其中所說的匯入匯出,其實不僅僅是hdfs,指的是hadoop生態圈,可以從mysql匯入到hive、hbase等框架中,自己之前理解的太過狹窄

sqoop help

sqoop command [args] #sqoop的使用

使用sqoop help #就可以看見command中都有哪些

使用sqoop help command #就可以看見command裡面的引數

如:sqoop help

sqoop help export #檢視export這個命令的引數的使用

sqoop list-databases \

--connect jdbc:mysql:

//data001:

3306 \ #hostname

(data001)

--password 000000 \ #登入資料庫mysql的密碼

--username root \ ##登入資料庫mysql # msyql -uroot -p000000

如:sqoop list-databases \

--connect jdbc:mysql:

//data001:

3306 \

--password 000000 \

--username root

sqoop list-tables \   #list-tables 

--connect jdbc:mysql:

//data001:

3306

/sqoop \ #相對於檢視資料庫資訊, 後面增加了表所在的資料庫(sqoop資料庫)

--password 000000 \

--username root \

備註:這裡所說的匯入匯出都是針對於hadoop來講。

匯入:指將mysql匯入到hdfs中

匯出:指將hdfs資料匯出到mysql中

1.全部匯入

sqoop import \

--connect jdbc:mysql:

//data001:

3306

/sqoop \

--password 000000 \

--username root \

--table sqoop1 \ #表名

--mapreduce-job-name frommysql \ #修改上傳到8088web介面上的iar名稱為fromsql,預設的名稱為表名.jar

-m 1 #指定mapreduce數量

如:sqoop import \

--connect jdbc:mysql:

//data001:

3306

/sqoop \

--password 000000 \

--username root \

--table sqoop1 \

--target-dir /user/hadoop/sqoop/ss \

-m 1

*****==

備註:1.將mysql中sqoop資料庫中的sqoop1表匯入到hdfs中

2.預設匯入在/user/hostname目錄下: hdfs dfs -ls==hdfs dfs -ls /user/hadoop

3.mr:reducer個數決定了最終輸出檔案的個數,預設是4. 用-m x進行設定

沒有reducer則有map決定

4.--mapreduce-job-name frommysql 設定在hdfs中的名稱為frommysql

5.delect-target-dir #這個是如果第一次匯入到hdfs沒有問題,如果第二次匯入就會儲存,這個設定是目標目錄刪除掉

2.部分匯入

sqoop import \

--connect jdbc:mysql:

//data001:

3306

/sqoop \

--password 000000 \

--username root \

--table sqoop1 \

--targer-dir /user/hadoop/a \ #指定輸出路徑

--columns "sql語句中的字段" \ #指定匯入字段

--fileds-terminated-by '\t' \ #指定分隔符

--null-string ''

--null-non-string '0' \ #將如果null是字串型別的,不輸出 ,如果null不是字串型別的就用0代替

--where 'sal>2000' \

-m 1

如:sqoop import \

--connect jdbc:mysql:

//data001:

3306

/sqoop \

--password 000000 \

--username root \

--table sqoop1 \

--target-dir /user/hadoop/a \

--columns empno,job \

-m 1

3.sql語句匯入

sqoop import \

--connect jdbc:mysql:

//data001:

3306

/sqoop \

--password 000000 \

--username root \

--table sqoop1 \

--targer-dir /user/hadoop/a \ #指定輸出路徑

--fileds-terminated-by '\t' \ #指定分隔符

--null-string ''

--null-non-string '0' \ #將如果null是字串型別的,不輸出 ,如果null不是字串型別的就用0代替

--query 'select * from 表名 where 'sal>

2000

''\-m 1

#這個會報錯,1.然後在sql語句中進行修改select * from emp where sal>

2000 and $conditions

2.'select * from emp where sal>2000 and $conditions'

=="select * from emp where sal>2000 and \$conditions"

雙引號裡面需要在$conditions前面加乙個轉義符 \

修改後:

sqoop import \

--connect jdbc:mysql:

//data001:

3306

/sqoop \

--password 000000 \

--username root \

--target-dir /user/hadoop/aa \

--query 'select * from sqoop1 where sal>2000 and $conditions' \

-m 1

1.在mysql中建立表

create table sqoop1 (

empno int

,ename char

,job char

,mgr int

,hiredate char

,sal double

,comm double

,deptno int);

2.匯入資料

sqoop export \

----connect jdbc:mysql:

//data001:

3306

/sqoop \

--password 000000 \

--username root \

--table sqoop1 \ #匯出到sqoop1表中

--export-dir filepath #需要匯出的hdfs的路徑

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中,匯入 概念指 從非大資料集群 rdbms 向大資料集群 hdfs,hive,hbase 中傳輸資料,叫做 匯入,即使用import關鍵字。確定mysql服務開啟正常 在mysql中新建一張表並插入一些資料 mysql uroot p000000 mysq...

sqoop基本知識

最早 資料儲存是基於傳統關係型資料庫。隨著資料量增長,傳統的資料儲存方式無法滿足需求,換一種新的儲存策略。hdfs 分布式儲存 應運而生。但傳統的關係型資料庫 mysql oracle 裡所儲存的資料,需要遷移到大資料平台。sqoop應運而生。sqoop 是 apache 旗下一款hadoop 和關...