Sqoop实用

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

扫描二维码关注公众号,回复: 4607981 查看本文章

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

 

有兴趣可以加QQ群讨论:963022008

猜你喜欢

转载自blog.csdn.net/Su_Levi_Wei/article/details/85212328