版权声明:本文为博主原创文章,未经博主允许不得转载。 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