抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >


大数据处理技术 - sqoop 实战及原理

下载并解压

安装 sqoop 的前提是已经具备 java 和 hadoop 的环境

下载地址
http://archive.cloudera.com/cdh5/cdh/5/
sqoop1 版本详细下载地址
http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.14.0.tar.gz
sqoop2 版本详细下载地址
http://archive.cloudera.com/cdh5/cdh/5/sqoop2-1.99.5-cdh5.14.0.tar.gz

我们这里使用 sqoop1 的版本,下载之后上传到 /export/softwares 目录下,然后进行解压

cd /export/softwares
tar -zxvf sqoop-1.4.6-cdh5.14.0.tar.gz -C ../servers/

修改配置文件

cd /export/servers/sqoop-1.4.6-cdh5.14.0/conf/
cp sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh
sqoop-env.sh
export HADOOP_COMMON_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
export HADOOP_MAPRED_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
export HIVE_HOME=/export/servers/hive-1.1.0-cdh5.14.0

加入额外的依赖包

sqoop 的使用需要添加两个额外的依赖包,一个是 mysql 的驱动包,一个是 java-json 的的依
赖包,不然就会报错

mysql-connector-java-5.1.40.jar
java-json.jar

验证启动

cd /export/servers/sqoop-1.4.6-cdh5.14.0
bin/sqoop-version

Sqoop 的数据导入

“导入工具” 导入单个表从 RDBMS 到 HDFS。表中的每一行被视为 HDFS 的记录。所有记录都存储为文本文件的文本数据(或者 Avro、sequence 文件等二进制数据)

列举出所有的数据库

命令行查看帮助

bin/sqoop list-databases --help

列出 win10 主机所有的数据库:
开启本地数据库远程连接权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
flush privileges;
bin/sqoop list-databases --connect jdbc:mysql://192.168.52.120:3306/ --username root --password 123456
bin/sqoop list-databases --connect jdbc:mysql://10.6.67.200:3306/ --username root --password 123

查看某一个数据库下面的所有数据表

bin/sqoop list-tables --connect jdbc:mysql://10.6.67.200:3306/test00 --username root --password 123

导入数据库表数据到 HDFS

下面的命令用于从 MySQL 数据库服务器中的 emp 表导入 HDFS。

bin/sqoop import --connect jdbc:mysql://10.6.67.200:3306/test00 --password 123 --username root --table emp --m 1

为了验证在 HDFS 导入的数据,请使用以下命令查看导入的数据

hdfs dfs -ls /user/root/emp

导入到 HDFS 指定目录

在导入表数据到 HDFS 使用 Sqoop 导入工具,我们可以指定目标目录。
使用参数 –target-dir 来指定导出目的地,
使用参数 —delete-target-dir 来判断导出目录是否存在,如果存在就删掉

bin/sqoop import --connect jdbc:mysql://10.6.67.200/test00 --username root --password 123 --delete-target-dir --table emp --target-dir /sqoop/emp --m 1

查看导出的数据

hdfs dfs -text /sqoop/emp/part-m-00000

它会用逗号(,)分隔 emp_add 表的数据和字段。

导入到 hdfs 指定目录并指定字段之间的分隔符

bin/sqoop import --connect jdbc:mysql://10.6.67.200:3306/test00 --username root --password 123 --delete-target-dir --table emp --target-dir /sqoop/emp3 --m 1 --fields-terminated-by '\t'

查看文件内容

hdfs dfs -text /sqoop/emp3/part-m-00000

Sqoop 的数据导出

将数据从 HDFS 把文件导出到 RDBMS 数据库
导出前,目标表必须存在于目标数据库中。

  • 默认操作是从将文件中的数据使用 INSERT 语句插入到表中
  • 更新模式下,是生成 UPDATE 语句更新表数据

hdfs 导出到 mysql

数据是在 HDFS 当中的如下目录 /sqoop/emp,数据内容如下

第一步:创建 mysql 表

CREATE TABLE emp_out(
EMPNO int PRIMARY KEY, #员工编号
ENAME VARCHAR(10), #员工姓名
JOB VARCHAR(9), #员工工作
MGR int, #员工直属领导编号
HIREDATE DATE, #入职时间
SAL double, #工资
COMM double, #奖金
DEPTNO int #对应 dept 表的外键
);

第二步:执行导出命令

通过 export 来实现数据的导出,将 hdfs 的数据导出到 mysql 当中去

bin/sqoop export \
--connect jdbc:mysql://10.6.67.200:3306/test00 \
--username root --password 123 \
--table emp_out \
--export-dir /sqoop/emp \
--input-fields-terminated-by ","

第三步:验证 mysql 表数据

推荐阅读
大数据处理技术-sqoop 数据迁移 概述 大数据处理技术-sqoop 数据迁移 概述 mysql的使用 mysql的使用 Hive安装部署 Hive安装部署 mysql与pymysql的设置 mysql与pymysql的设置 大数据处理技术-HDFS的命令行使用 大数据处理技术-HDFS的命令行使用 大数据处理技术-CDH 版本的 zookeeper 环境搭建 大数据处理技术-CDH 版本的 zookeeper 环境搭建

留言区

Are You A Robot?