Sqoop

作者: _Levi__ | 来源:发表于2019-08-20 00:16 被阅读0次

为什么要有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/sqoopjob --list

执行Job:bin/sqoopjob --exec jobname

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

相关文章

网友评论

      本文标题:Sqoop

      本文链接:https://www.haomeiwen.com/subject/gakysctx.html