Sqoop学习笔记_Sqoop的基本使用一

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脚本进行传参。不过还是过于麻烦

原文地址:https://www.cnblogs.com/yaohaitao/p/5354414.html