其中所說的匯入匯出,其實不僅僅是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 和關...