相关配置版本
组件 | 版本 |
---|---|
Hadoop | 2.9.2 |
Jdk | 1.8.0_221 |
CentOS | 7.7 |
Sqoop | 2.6.0 |
MySQL | 5.7.30 |
MySQL驱动 | 5.1.48 |
Sqoop 说明
把Sqoop 当作一个工具就好,它的主要作用就是把 传统数据库的数据
与 大数据存储互导数据
。
- MySQL <-> HDFS
- MySQL <-> Hive
- 使用SQL作为导入条件
- 等
安装MySQL
# 没有 wget ,则执行这个 yum install wget # 下载 MySQL 5.7 wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm # 安装 rpm 包 yum -y install mysql57-community-release-el7-10.noarch.rpm # 通过Yum来安装MySQL,会自动处理MySQL与其他组件的依赖关系 yum install mysql-community-server # 启动 MySQL systemctl start mysqld.service # 查看密码 grep password /var/log/mysqld.log
修改 MySQL 密码
原本密码强度需要 大小写母 特殊字符 数字, 最少8位,我们把密码改简单一点
# 首先进入 MySQL mysql -uroot -p # 查看密码策略 SHOW VARIABLES LIKE "%password%"; # 修改密码长度策略为5 就是密码长度最短 5 位 SET GLOBAL validate_password_length=5; # 修改密码强度策略 0 就不需要大小写字母和符号 SET GLOBAL validate_password_policy=0; # 修改密码 SET PASSWORD = PASSWORD("123456");
复制驱动
把 MySQL驱动 复制到 Sqoop 的lib/ 目录下
。
cp mysql-connector-java-5.1.38-bin.jar /usr/local/src/sqoop-1.4.7/lib/
测试是否连接成功
通过 Sqoop 查看 MySQL 数据库。
sqoop list-databases \ --connect jdbc:mysql://127.0.0.1:3306 \ --username 'root' \ --password '123456'
MySQL —> HDFS
首先需要在 MySQL 建好需要导出的
表
,以及添加好内容
# 创建 test 数据库 craete database test; # 创建 stab 表 create table stab( id int, name varchar(20) ); # 插入 stab表 数据 insert into stab(id, name) values(1,"big"),(2,"data"),(3,"boy");
使用 Sqoop 导出,
命令关键字 import(导入)
sqoop import \ --connect 'jdbc:mysql://127.0.0.1:3306/test' \ --table 'stab' \ --username 'root' \ --password '123456' \ --target-dir '/sqoop/stab' \ --fields-terminated-by '|' \ --split-by id
某些参数含义
- —connect : MySQL数据库地址
- —table : 需要导出表的表名
- —target-dir : 表导出的HDFS地址
- —fields-terminated-by : 设置 导出数据 字符分隔符
- —split-by id : HDFS 上数据的分区规则
(最好该字段是 int 类型,默认为主键)
,上命令,表示安装 id 字段分区,如果不分区,就把--split-by id
替换成-m 1
即可 - -m : 表明需要使用几个map任务并发执行
- 如果设置为2,则表示:
- 第一个map执行拆分字段值为(1,25)之间的数据,处理结果会在一个分区
- 第二个map执行拆分字段值为(26,50)之间的数据,处理结果会在另一个分区
- 如果设置为2,则表示:
HDFS —> MySQL
Sqoop 不能创建表
,所以需要实现把表创建完成。
清空
test数据库
里stab表
的数据,命令关键字 export(导出)
truncate table test.stab;
使用 Sqoop 从
HDFS
导入到MySQL
sqoop export \ --connect 'jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8' \ --username 'root' \ --password '123456' \ --table 'stab' \ --export-dir '/sqoop/stab' \ --fields-terminated-by '|' \ -m 1
版权声明:《 Sqoop 基础使用 MySQL <-> HDFS 互导数据 》为明妃原创文章,转载请注明出处!
最后编辑:2020-6-8 02:06:31