1、简介
Sqoop是一种用于在Hadoop和结构化数据存储(如关系数据库)之间高效传输大批量数据的工具。比如,Sqoop从关系型数据库管理系统(MySQL、Oracle等)向Hadoop分布式文件系统(HDFS)、Hive或Hbase等中导入数据;或者从Hadoop分布式文件系统、Hive或Hbase等通过Sqoop导入到关系数据库中。
Sqoop的底层原理本质上是MapReduce任务。Sqoop是通过一个MapReduce作业从数据库中导入一个表,这个作业从表中逐行抽取数据,接着将一行行的数据写入HDFS。
Sqoop的导出通常是将HDFS的数据导入到关系型数据库中,关系型数据库中的表必须提前创建好。在底层方面,导出之前,Sqoop会选择导出方法,通常是JDBC,接着Sqoop会生成一个Java类,这个类可以解析文本中的数据,并将相应的值插入表中。在启动MapReduce之后,会从HDFS中读取并解析数据,同时执行选定的导出方法。
基于JDBC的导出方法会生成多条insert语句,每条insert语句均会向表中插入多条数据,同时为了确保不同I/O的操作可以并行执行,在从HDFS读取数据并与数据库通信时,是多个单独线程同时运行的。
2、安装部署
1、下载
wget https://mirrors.bfsu.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz --no-check-certificate
2、解压、重命名
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../servers/
cd ../servers/
mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop-1.4.7.bin
3、修改配置sqoop-env.sh文件
首先需要把sqoop-env-template.sh修改成sqoop-env.sh,然后增加或修改如下配置即可。
export HADOOP_COMMON_HOME=/export/servers/hadoop-2.7.5
export HADOOP_MAPRED_HOME=/export/servers/hadoop-2.7.5
3、从Mysql导入数据到HDFS
1、复制Mysql的jar包。
因为这里使用的是Mysql数据库,需要把对应的jar包复制到sqoop的lib目录下。
2、编写导入配置文件
注:需要注意配置文件的格式
import
--connect
jdbc:mysql://192.168.1.87:3306/test
--username
root
--password
123456
--table
user_test
--columns
id,name,age
--where
id>0
--target-dir
hdfs://node01:8020/sqoop
--delete-target-dir
-m
1
--as-textfile
#--null-string
3、执行命令
./bin/sqoop --options-file ./job/job1.conf
出现如下日志,说明导入成功。
这时候,访问hdsf,就可以看见对应的目录。
4、Sqoop数据导出到Mysql
1、编写配置文件
export
--connect
jdbc:mysql://192.168.1.87:3306/test
--username
root
--password
123456
--table
user_test2
--columns
id,name,age
--export-dir
hdfs://node01:8020/sqoop
-m
1
2、准备user_test2表
3、执行导出命令
./bin/sqoop --options-file ./job/job2.conf
出现如下日志,说明导入成功。
查看数据库表如下:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68809.html