Sqoop

Posted -levi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sqoop相关的知识,希望对你有一定的参考价值。

为什么要有Sqoop?

将数据从别的数据库导到Hadoop、Hbase或Hive太麻烦了。

 技术图片

什么是Sqoop?

      Sqoop就是Hadoop、Hive、HBase等数据仓库与数据库之间传输数据的工具。,就是将导入(输入)和导出(输出)的命令映射成MR程序。

      导入:mysql等数据库数据导入到HDFS、Hive、HBase等数据仓库

      导出:Hadoop导出数据到数据库

 

 

操作

RDBMS -> HDFS

全表数据导入:

bin/sqoop import

--connect jdbc:mysql://hadoop01.levi.com:3306/background

--username root

--password root

--table user

--target-dir /user/sqoop/user

--delete-target-dir

--num-mappers 1

--fields-terminated-by "\\t"

 

部分数据导入:

bin/sqoop import

--connect jdbc:mysql://hadoop01.levi.com:3306/background

--username root

--password root

--target-dir /user/sqoop/user

--delete-target-dir

--num-mappers 1

--fields-terminated-by "\\t"

--query ‘select name from user where id <= 10 and $CONDITIONS‘;     

 

 

导入指定的列:

bin/sqoop import

--connect jdbc:mysql://hadoop01.levi.com:3306/background

--username root

--password root

--target-dir /user/sqoop/user

--delete-target-dir

--num-mappers 1

--fields-terminated-by "\\t"

--table user

--columns id,name;

 

 

Sqoop关键字筛选数据导入:

bin/sqoop import

--connect jdbc:mysql://hadoop01.levi.com:3306/background

--username root

--password root

--target-dir /user/sqoop/user

--delete-target-dir

--num-mappers 1

--fields-terminated-by "\\t"

--table user

--where id=3;

 

 

RDBMS -> Hive

导入数据到Hive:

bin/sqoop import

--connect jdbc:mysql://hadoop01.levi.com:3306/background

--username root

--password root

--table user

--num-mappers 1

--hive-import

--hive-table user

--fields-terminated-by ‘\\t‘

--hive-overwrite

--delete-target-dir

--hive-table levi.user;

 

备注:如果导入的表在hive中是没有的,那么则会到default数据库

导入过程:将数据分割后,输出到一个文件中,把这个文件弄到HDFS,并且在metastore中生成对应关系的元数据

 

 

Hive/HDFS -> RDBMS

导出数据到RDBMS:

bin/sqoop export

--connect jdbc:mysql://hadoop01.levi.com:3306/background

--username root

--password root

--table user

--num-mappers 1

--export-dir /user/sqoop/user

--input-fields-terminated-by ‘\\t‘;

 

备注:假设是MySQL数据库,如果数据库中没有表则会报错

 

 

 

 

 

Sqoop-Job

定义Job:

bin/sqoop job --create jobname

-- import

--connect jdbc:mysql://hadoop01.levi.com:3306/background

--username root

--password root

--table user

--target-dir /user/sqoop/user

--delete-target-dir

--num-mappers 1

--fields-terminated-by "\\t"

 

 

查看Job:bin/sqoop job --list

执行Job:bin/sqoop job --exec jobname

验证作业情况:bin/sqoop job --show jobname

 

以上是关于Sqoop的主要内容,如果未能解决你的问题,请参考以下文章

大数据技术名词解释

教程 | 使用Sqoop从MySQL导入数据到Hive和HBase

Hive视频_Hive详解及实战(Hive环境部署+Zeus+Sqoop Sqoop+用户行为分析案例)