sqoop mysql 导 HDFS、HIVE

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guohan_solft/article/details/79326282

目录:

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

猜你喜欢

转载自blog.csdn.net/guohan_solft/article/details/79326282