对于sqoop,我之前只是知道作用,并未对其进行研究。
最近设计基础架构的过程中,其中一环需要用到sqoop,用来导数据,涉及全量和增量,于是花时间学习了一下。
这里讨论sqoop导数据的全量和增量的功能,以及遇到的一些问题。
下面的案例是:使用sqoop将mysql的数据导入hive中,数据来自天气数据。
制造数据源
通过NiFi采集天气数据,保存到mysql。
具体的采集流程并非本文重点,这里就不做描述了,如有兴趣,可参考 NiFi数据流实例二。
创建mysql库表
修改mysql字符集
由于数据中有中文,防止mysql出现乱码问题,这里需要把mysql的字符集修改成utf8。
根据我的了解,mysql还有一个utf8mb4,具体区别请自行查阅资料。
修改/etc/my.cnf文件,对应添加如下内容:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[mysql]
default-character-set = utf8
[mysql.server]
default-character-set = utf8
[mysqld_safe]
default-character-set = utf8
[client]
default-character-set = utf8
保存之后,重启mysql:systemctl restart mysqld。
创建库表
创建数据库:
CREATE DATABASE xwd CHARACTER SET utf8 COLLATE utf8_general_ci;
创建表:
CREATE TABLE IF NOT EXISTS xwd.tianqi (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
insert_time timestamp DEFAULT CURRE