sqoop mysql 導 HDFS、HIVE
阿新 • • 發佈:2018-12-17
目錄:
一、mysql 匯入 hdfs
1、最簡單的匯入
將mysql中庫為emp_db下的表emp匯入到hdfs上
命令列輸入如下:
sqoop import \
--connect jdbc:mysql://mini1:3306/emp_db \
--username root \
--password root \
--table amp
--m 1
執行完成
此刻變好有二
變化一:執行該命令所在的目錄下面生成emp.java檔案
變化二:hdfs上面新增目錄/user/root/emp/part-m-00000
檢視hdfs上的資料,內容為表emp中的所有資料
2、指定mapTask個數
sqoop import \
--connect jdbc: mysql://mini1:3306/emp_db \
--username root \
--password root \
--table emp \
--split-by id \
--m 2
變化一:執行該命令所在的目錄下面生成emp.java檔案
變化二:hdfs上面新增目錄資料檔案為兩個
/user/root/emp/part-m-00000
/user/root/emp/part-m-00001
3、匯入到hdfs上指定的目錄
將mysql中emp表的資料匯入到hdfs上的/empTarget目錄下面,命令列輸入如下:
sqoop import \
--connect jdbc:mysql://mini1:3306/emp _db \
--username root \
--password root \
--table emp \
--target-dir /empTarget \
--m 1
二、mysql 匯入 hive
其本質是將資料先匯入到hdfs上,再呼叫命令load data inpath命令將hdfs上的資料再匯入到hive中
1、最簡單的匯入
將mysql中emp表匯入到hive中,由於未指定匯入到hive中哪個庫,預設匯入到default庫中
sqoop import \
--connect jdbc:mysql://mini1:3306/emp_db \
--username root \
--password root \
--table emp
--hive-import
--m 1
2、匯入到指定的hive庫的指定的表中
將mysql中amp表匯入到hive中emp_db庫下,表名為amp,命令執行如下:
sqoop import \
--connect jdbc:mysql://mini1:3306/emp_db \
--username root \
--password root \
--table emp
--hive-import \
--hive-database emp_db
--hive-table emp
--m 1
3、先匯入到指定的HDFS目錄上,再匯入到指定的hive庫的指定的表中
將mysql中amp表匯入到hive中emp_db庫下,表名為amp,命令執行如下:
sqoop import \
--connect jdbc:mysql://mini1:3306/emp_db \
--username root \
--password root \
--table emp \
--target-dir /targetDir \
--hive-import \
--hive-database emp_db \
--hive-table emp \
--m 1
三、從mysql中匯出一張表的部分資料
1 指定where條件
sqoop import \
--connect jdbc:mysql://mini1:3306/emp_db \
--password root \
--username root \
--table emp \
--where "id=1" \
--target-dir /targetWhere \
--hive-import \
--hive-database emp_db \
--hive-table emp_where \
--m 1
2 自定義sql語句
sqoop import \
--connect jdbc:mysql://mini1:3306/emp_db \
--password root \
--username root \
--query 'select id,name,age from emp where id=2 and $CONDITIONS' \
--target-dir /targetWhere \
--hive-import \
--hive-database emp_db \
--hive-table emp_where \
--m 1
四、增量匯入
增量匯入是僅匯入新新增的表中的行的技術。
它需要新增‘incremental’, ‘check-column’, 和 ‘last-value’選項來執行增量匯入。
從emp表中匯出id大於2的資料到hive的emp_where表中
sqoop import \
--connect jdbc:mysql://mini1:3306/emp_db \
--password root \
--username root \
--table emp \
--target-dir /targetWhere \
--hive-import \
--hive-database emp_db \
--hive-table emp_where \
--incremental append \
--check-column id \
--last-value 2 \
--m 1