Sqoop 导入,导出练习

什么是Sqoop

这里写图片描述
这里写图片描述
sqoop是一个数据转换的工具,可以将hadoop和关系型数据库中的数据进行相互高效的转换

    1.把关系型数据库的数据导入到hadoop与其相关的系统(HIVE,HBASE)中
    2.把数据从Hadoop系统抽取并导出到关系型数据库中

sqoop利用MapReduce加快数据传输的速度,批处理的方式进行数据传输。注意,只有Map任务,没有Reduce任务

Sqoop1和Sqoop2的对比

1.Sqoop1和Sqoop2是两个完全不兼容的版本,功能相差不大
版本划分方式:
sqoop1 :1.4.x~
sqoop2:1.99.x~
2.Sqoop2比Sqoop1改进的地方
引入sqoop server,集中管理Connector等
多种访问访问方式:cli,Web UI,REST API
引入基于角色的安全机制
3.sqoop在企业中的使用场景;
1.将关系型数据库表中的数据增量抽取到Hive表中,或者Hdfs文件(import)
2.将hive表中的数据,导出到关系型数据库中(export)

Sqoop的结构

这里写图片描述

sqoop将hadoop相关系统的数据和关系型数据库数据之间进行相互的操作。
sqoop访问入口,输入命令,进行将数据的导入,导出、

Sqoop的安装配置

sqoop文档

http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.5-cdh5.3.6/
这里写图片描述

解压sqoop安装包

$ tar zxf sqoop-1.4.5-cdh5.3.6.tar.gz -C /opt/cdh5.3.6/

这里写图片描述

配置conf目录下文件sqoop-env-template.sh

1.更改sqoop-env-template.sh文件名为 sqoop-env.sh

mv sqoop-env-template.cmd sqoop-env.sh

这里写图片描述

2修改文件内容

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/opt/cdh5.3.6/hadoop-2.5.0-cdh5.3.6

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/opt/cdh5.3.6/hadoop-2.5.0-cdh5.3.6

#Set the path to where bin/hive is available
export HIVE_HOME=/opt/cdh5.3.6/hive-0.13.1-cdh5.3.6

#Set the path for where zookeper config dir is
export ZOOCFGDIR=/opt/cdh5.3.6/zookeeper-3.4.5-cdh5.3.6/conf

这里写图片描述

3.拷贝mysql驱动文件到sqoop的lib文件夹下

 cp -r /opt/cdh5.3.6/hive-0.13.1-cdh5.3.6/lib/mysql-connector-java-5.1.27-bin.jar /opt/cdh5.3.6/sqoop-1.4.5-cdh5.3.6/lib/

这里写图片描述

启动sqoop

进入sqoop文件

bin/sqoop

这里写图片描述
使用 bin/sqoop help
查看帮助

使用sqoop连接数据库

 bin/sqoop list-databases 

使用命令查看连接数据库的信息
这里写图片描述
连接数据库

bin/sqoop list-databases \
--connect jdbc:mysql://localhost:3306 \
--username root \
--password 123456 

这里写图片描述

sqoop导入(import),导出数据(export)

sqoop import(导入数据到hdfs)

常规导入
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/sqoop_test \
--username root \  
--password 123456 
--table my_user              --设置要导出的表名
--num-mappers 1              --设置map的数量 
--delete-target-dir          --导入目录删除之前的目录
--target-dir  /sqoop/imp/    --设置导出到hdfs的目录 
--direct                     --直接使用mysqldump命令
--fields-terminated-by '\t'  --设置字符的格式

这里写图片描述
查看导出结果
这里写图片描述
注意
1.使用direct时必须保证在每个yarn上都要有mysqldump
2.–incremental和–delete-target-dir 不可以同时使用

增量导入
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/sqoop_test \
--username root \  
--password 123456 
--table my_user              --设置要导出的表名
--num-mappers 1              --设置map的数量 
--delete-target-dir          --导入目录删除之前的目录
--target-dir  /sqoop/imp/    --设置导出到hdfs的目录 
--direct                     --直接使用mysqldump命令
--fields-terminated-by '\t'  --设置字符的格式
--check-column               --制定一个字段(数据插入的时间)
--incremental                --追加信息(增量)
--last-value 4               --上一次插入最后一列的数

增量导入主要属性:
–check-column –制定一个字段(数据插入的时间)
–incremental –追加信息(增量)
–last-value 4 –上一次插入最后一列的数
这里写图片描述
这里写图片描述
查看导出结果
这里写图片描述

查询语句导入
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/sqoop_test \
--username root \
--password 123456 \
--query "select * from my_user where \$CONDITIONS"  \
--num-mappers 1   \
--delete-target-dir \
--target-dir  /sqoop/imp \
--direct  \
--fields-terminated-by '\t'

这里写图片描述

这里写图片描述
查看导出结果
这里写图片描述
注意!
使用–query 查询语句查询导入的时候,–table不能与之同时使用

指定字段导入
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/sqoop_test \
--username root \
--password 123456 \
--table my_user  \
--columns "id,account" \
--num-mappers 1   \
--delete-target-dir \
--target-dir  /sqoop/imp \
--direct  \
--fields-terminated-by '\t'

这里写图片描述
查看导出结果
这里写图片描述

where 条件查询导入
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/sqoop_test \
--username root \
--password 123456 \
--table my_user  \
--where "passwd ='admin' or account='put'" \
--num-mappers 1   \
--delete-target-dir \
--target-dir  /sqoop/imp \
--direct  \
--fields-terminated-by '\t'

这里写图片描述
查看导出结果
这里写图片描述

sqoop export(导出数据到mysql)

使用hellp命令查看export的相关参数
bin/sqoop export --help

这里写图片描述

导出hdfs数据到数据库
bin/sqoop export \
--connect jdbc:mysql://localhost:3306/sqoop_test \
--username root \
--password 123456 \
--table export_my_user   \
--num-mappers 1   \
--export-dir  /user/hao/my_user \
--input-fields-terminated-by ','    

这里写图片描述
查看结果
这里写图片描述
注意要上传的数据格式,是分隔符还是逗号等。。。

导入数据到hive表

这里写图片描述
查看结果,要注意数据格式,”\t”,”,”
这里写图片描述
注意
hive 尽量使用默认的用户,否则可能无法加载数据
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值