Sqoop
关系DB与Hive/HDFS/HBase导入导出的Mapreduce框架。
http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.0/SqoopUserGuide.html
ETL: Extraction-Transformation-Loading的缩写,数据提取、转换(业务处理)和加载。
文件数据源:hive load命令
关系DB数据源:sqoop抽取
Sqoop import数据到HDFS/Hive/Hbase-->业务处理--->Sqoop export数据到关系数据库
Sqoop import 从关系数据库抽取到HDFS
Sqoop export 从HDFS导回到关系数据
二、Sqoop Linux下开发的步骤
Mysql Jdbc驱动放到SQOOP_HOME/lib下
放lib的目录(eg:cd /opt/cloudera/parcels/CHD/lib/sqoop/lib,有时候master和slave节点都要存放此lib)
1、Sqoop 基本导入和导出讲解(command line方式)
sqoop import --connect jdbc:mysql://master:3306/test \ (此句是配置mysql路径,linux下一行未完结要加上反斜杠)
--username root --password 123456 --table rpt_sale_daily \ (配置mysql的帐号和密码和table表名)
--columns "dateid,huodong,pv,uv" \ (配置table抽取的字段)
--where “dateid=‘2015-08-28‘” \ (表抽取查询条件)
--target-dir sqoop/rpt_sale_daily \ (表抽取存放目标位置)
-m 1 (sqoop抽取要启动的map数量,如果抽取量多的话可以适当调节map的数量)
Sqoop import(抽取)需要注意:
抽取到target-dir ,列用逗号分隔;
抽取到hive表时,会根据hive表的列分隔符自动匹配。
2.利用sqoop --options也可以进行sqoop抽取但是不支持往数据里面传参数
sqoop --options-file ./test.opt 不支持往opt文件里传参数。(shell脚本方式)
先写好执行文件test.opt
在shell脚本里写好执行sqoop执行opt文件命令
执行命令
相比下command line的方式会比较好,因为可以利用shell脚本进行传参。不过还是过于麻烦