码迷,mamicode.com
首页 > 其他好文 > 详细

Sqoop

时间:2019-08-20 01:07:48      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:ast   job   column   img   l数据库   where   strong   use   info   

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

标签:ast   job   column   img   l数据库   where   strong   use   info   

原文地址:https://www.cnblogs.com/-levi/p/11380468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!