Hive学习之七《 Sqoop import 从关系数据库抽取到HDFS》
一、什么是sqoop
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
二、sqoop的特点
Sqoop中一大亮点就是可以通过hadoop的mapreduce把数据从关系型数据库中导入数据到HDFS。
三、Sqoop import 命令
将Mysql的jdbc驱动放在/opt/cloudera/parcels/CDH/lib/sqoop/lib目录下。
如下图:
参考学习网址:
http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.0/SqoopUserGuide.html
命令详解:
1、基本语法
1 $ sqoop import (generic-args) (import-args)$ sqoop-import (generic-args) (import-args)
2、基本命令
查看网址:
http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.0/SqoopUserGuide.html
中的sqoop import的 Import control arguments
3、案例
方式一:
将表rpt_sale_daily中数据导入到HDFS上。
目标目录为:sqoop/rpt_sale_daily。
sqoop import --connect jdbc:mysql://master:3306/test \ --username root --password 123456 --table rpt_sale_daily \ --columns "dateid,huodong,pv,uv" \ --where "dateid='2015-08-28'" \ --target-dir sqoop/rpt_sale_daily \ -m 1
如果提示 sqoop/rpt_sale_daily 目录已经存在,执行:
hadoop fs -rmr sqoop/rpt_sale_daily
执行结果:如下图
20条数据成功导入,开始检测吧亲。
执行代码:
hadoop fs -cat sqoop/rpt_sale_daily/part-m-00000
数据如下图:
关系数据库表rpt_sale_daily里面的数据如下:
对比,数据相同,成功导入。
方式二:
通过opt文件的方式传送:
新建test.opt文件:
1 import 2 --connect 3 jdbc:mysql://192.168.0.115:3306/test 4 --username 5 root 6 --password 7 123456 8 --table 9 rpt_sale_daily 10 --columns 11 "id,huodong,pvv,uvv" 12 --where 13 "id='2015-08-28'" 14 --target-dir 15 sqoop/rpt_sale_daily 16 -m 1
执行指令:
sqoop options-file test.opt
执行过程和结果和方式一一样。