1. 程式人生 > >sqoop mysql 導 HDFS、HIVE

sqoop mysql 導 HDFS、HIVE

目錄:

一、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