前置-解决中文乱码问题
解决方案-在mysql中执行
use hive;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
comment出现乱码的原因就是因为创建hive表时使用的编码集为
latin1
不是utf8不支持中文不可以把hive的元数据库编码集直接改为utf8,因为修改后元数据将全部失效,但是我们可以将与comment相关的字段编码集进行修改.改为utf8.
注意: 修改编码集后创建的表comment才能变成中文,因为之前添加的数据已经按照
latin1
编码集进行编码了.无法改变.
DataX介绍
DataX 是阿里推出的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
将DataX安装好之后, 仅需要配置Json的采集文件即可实现数据的同步
DataX几个组成部分:
Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。Writer:Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。
经过几年积累,DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入。DataX目前支持数据如下:
DataX的国内的开源的地址: Gitee 极速下载/alibaba datax?_from=gitee_search (码云)
DataX的GitHub的开源地址: https://github.com/alibaba/DataX
Datax中的插件使用json格式进行书写:
json格式中仅有以下几种数据类型
json格式中仅有以下几种数据类型
object数据类型: {键1: 值1, 键2: 值2....}
Array数据类型: [元素1, 元素2,......]
number数据类型: 1, 2, 11.2
string数据类型 : "name", "chuanzhi"
boolean数据类型: false , true
在json格式中不能使用'' 只能使用""
object数据类型的键,只能是字符串类型
一般情况下, json格式的最外层是一个大object{}
不能存在多余的, : 等符号
DataX使用
MySQL写入HDFS
1. 在mysql创建test数据库,在此数据库下创建student表,然后往表中插入数据。
drop database if exists test;
create database if not exists test character set utf8;
use test;
create table student(id int,name varchar(20),age int,createtime timestamp );
insert into `student` (`id`, `name`, `age`, `createtime`) values('1','zhangsan','18','2021-05-10 18:10:00');
insert into `student` (`id`, `name`, `age`, `createtime`) values('2','lisi','28','2021-05-10 19:10:00');
insert into `student` (`id`, `name`, `age`, `createtime`) values('3','wangwu','38','2021-05-10 20:10:00');