sqoop是一款對資料匯入和匯出的軟體
匯入:是將rdbms關係型資料庫中的資料匯入到hadoop集群中(hbase\hive\hdfs....)
匯出:是將hdfs集群環境中的資料匯出到rdbms關係型資料庫中
//bin/sqoop import --connect jdbc:mysql://:3306/ --username --password --table --target-dir --m 1
--target-dir:是將資料匯入到hdfs後的路徑,不可以存在,假如已經存在,執行就會報錯(sqoop底層實現是mr)
--m 1:代表執行乙個maptask,預設是沒有reducetask的
注意:如果不寫--target-dir,那麼sqoop將會在hdfs上的/user/root/目錄下生成乙個跟表名相同的資料夾,匯入的資料就在該資料夾中
從關係型資料庫匯入到hive中有兩種方案
方案一:先導入錶結構,再匯入表資料
匯入表結構操作
bin/sqoop create-hive-table \
--connect jdbc:mysql://mysql服務主機ip:3306/資料庫名 \
--username --password \
--table
--hive-table .
--create-hive-table:宣告該操作為建表操作
--hive-table:在指定的資料庫下生成指定表名的資料庫
匯入表資料的操作
bin/sqoop import \
--connect jdbc:mysql://:3306/ \
--username --password \
--table \
--m 1 \
--hive-table . \
--hive-import
--hive-import:宣告該操作為向hive中新增資料
方案二:直接匯入表結構以及表資料
bin/sqoop import \
--connect jdbc:mysql://:3306/ \
--username \
--password \
--table \
--hive-import \
--m 1 \
--hive-database ;
該方案中的hive生成的表名與mysql中的表名相同
2.3.1where子句
bin/sqoop import \
--connect jdbc:mysql://:3306/ \
--username \
--password \
--where "條件" \
--target-dir \
--table \
--m 1
將符合where條件中的資料的所有字段匯入到hdfs中
2.3.2query查詢
bin/sqoop import \
--connect jdbc:mysql://:3306/ \
--username \
--password \
--target-dir \
--query 'select id,name,deg from emp where id>1203 and $conditions' \
--split-by id \
--fields-terminated-by '\t' \
--m 2
--query 後面使用sql語句
sql語句必須新增where條件,如果全都要的話,就寫1=1
sql語句最後面一定要在where後加上and $conditions
sql語句必須使用單引號括起來(不要問為什麼,記住就行),雙引號也不可以
使用--query引數後,執行命令就不可以出現--table引數,因為在sql語句中已經指定了表
Sqoop的全量匯入和增量匯入
增量匯入 2.lastmodify方式 基於時間列 sqoop import connect jdbc mysql username scfl password scfl123 query select from test table where conditions target dir user...
Sqoop 資料匯出 全量 增量 更新
sqoop支援直接從hive表到rdbms表的匯出操作,也支援hdfs到rdbms表的操作,當前需求是從hive中匯出資料到rdbms,有如下兩種方案 從hive表到rdbms表的直接匯出 該種方式效率較高,但是此時相當於直接在hive表與rdbms表的資料之間做全量 增量和更新對比,當hive表記...
Sqoop 資料匯出 全量 增量 更新
sqoop支援直接從hive表到rdbms表的匯出操作,也支援hdfs到rdbms表的操作,當前需求是從hive中匯出資料到rdbms,有如下兩種方案 從hive表到rdbms表的直接匯出 該種方式效率較高,但是此時相當於直接在hive表與rdbms表的資料之間做全量 增量和更新對比,當hive表記...