Sqoop的匯入和匯出

2021-09-27 05:59:47 字數 3493 閱讀 3218

將mysql的資料匯入到hdfs

本地連線node-1上的資料庫:

使用sqlyog連線

先新建乙個測試資料庫,名為:userdb

先在本地使用之前安裝好的sqlyang連線node-1 的mysql,建立好測試資料。

使用命令將emp表的資料匯入到hdfs上

bin/sqoop import \								# 啟動匯入名利

--connect jdbc:mysql://node-1:3306/sqoopdb \ # 連線串

--username root \ # mysql的使用者名稱

--password hadoop \ # mysql的密碼

--target-dir /sqoopresult \ # 匯出存放路徑

--table emp --m 1 # 匯出的表, --m 1表示使用乙個mapreduce程式

注意:該命令執行時不加後面的注釋

每段後面的\表示命令還沒結束,不要執行。如果命令較長,sqoop支援這種寫法來換成多行寫。

檢視匯入的資料。

命令:hdfs dfs -cat /sqoopresult/part-m-00000

或者直接在hdfs的視覺化介面檢視。

將mysql的資料匯入到hive

匯入表結構使用命令:

bin/sqoop create-hive-table \					# 啟動匯入資料到hive

--connect jdbc:mysql://node-1:3306/userdb \ # mysql連線串

--table emp_add \ # mysql中要匯出表名

--username root \ # mysql的使用者名稱

--password hadoop \ # mysql的密碼

--hive-table pttest.emp_add_sp # hive中儲存的位置

注意:在hive中是沒有表的,sqoop會在匯入時在hive中選擇恰當的格式建立表。

這裡匯入只有表結構,沒有資料。

匯入表結構和資料:

bin/sqoop import \

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

--username root \

--password hadoop \

--table emp_add \

--hive-table pttest.emp_add_sp \

--hive-import \ # 這裡表示匯入資料

--m 1 # 啟動乙個mapreduce程式

匯入表資料的子集到hdfs

只匯入city ='sec-bad'的資料

bin/sqoop import \

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

--username root \

--password hadoop \

--where "city ='sec-bad'" \ # 和之前不同的是這裡加了和where條件

--target-dir /wherequery \

--table emp_add --m 1

檢視命令:hdfs dfs -cat /wherequery/part-m-00000

bin/sqoop import \

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

--username root \

--password hadoop \

--target-dir /wherequery12 \

--query 'select id,name,deg from emp where id>1203 and $conditions' \

--split-by id \

--fields-terminated-by '\t' \

--m 1

這裡query後面直接跟了一條sql語句,後面的and $conditions是固定格式

split-by表示按什麼進行切分

fields-terminated-by指定分隔符

檢視命令:hdfs dfs -cat /wherequery12/part-m-00000

增量匯入

bin/sqoop import \

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

--username root \

--password hadoop \

--table emp --m 1 \

--check-column id \ # 匯入時相關的字段

--last-value 1205 # 上一次最後匯入的值

sqoop不會自動在mysql上面建立表,所以,對於資料從hdfs上匯出到mysql中,需要我們先在mysql中建立好錶。

首先在mysql上建立好錶,使用sqlyog連線好mysql,再建立好錶。

create table employee ( 

id int not null primary key,

name varchar(20),

deg varchar(20),

salary int,

dept varchar(10));

老套路,在hdfs上建立好對應的資料夾,在linux上建立好測試檔案上傳到hdfs上建立好的檔案中。

hadoop fs -mkdir /emp_data

cd /export/data/

mkdir sqoopdata

cd sqoopdata/

vi 1.txt

hadoop fs -put 1.txt /emp_data/進入sqoop的安裝目錄,然後使用命令匯出資料

bin/sqoop export \

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

--username root \

--password hadoop \

--table employee \

--export-dir /emp_data/

sqoop匯入匯出

sqoop官方手冊位址 最近在看sqoop有些感想,就寫下來。sqoop是大資料裡面匯入匯出的乙個工具。關於import匯出 可以從mysql匯出到hdfs,hbase,hive,案例如下,這是乙個匯出到hdfs的案例 import connect jdbc mysql username root ...

sqoop匯入 匯出

全部匯入 sqoop import connect jdbc mysql hadoop01 3306 test1 username root password 1234 table students target dir user test1 delete target dir fields ter...

sqoop資料匯入和匯出

sqoop主要用於在hadoop hive 與傳統的資料庫 mysql postgresql 間進行資料的傳遞,可以將乙個關係型資料庫 例如 mysql oracle postgres等 中的資料導進到hadoop的hdfs中,也可以將hdfs的資料導進到關係型資料庫中。connect jdbc m...