mysql到hive数据类型转换
1.类型映射关系
mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表。
mysql到hive数据类型映射参考如下:
mysql数据类型 | hive数据类型 | |
---|---|---|
整型 | bigint | BIGINT |
整型 | int | BIGINT |
整型 | smallint | BIGINT |
整型 | tinyint | BIGINT |
浮点型 | decimal | decimal |
浮点型 | double | DOUBLE |
浮点型 | float | DOUBLE |
二进制 | binary | BINARY |
二进制 | varbinary | BINARY |
字符 | char | STRING |
字符 | varchar | STRING |
字符 | mediumtext | STRING |
字符 | text | STRING |
时间 | datetime | STRING |
时间 | time | STRING |
时间 | timestamp | STRING |
时间 | date | date |
json | json | MAP<STRING,STRING> |
2.问题注意:
1.问题:
用公司的大数据平台(DataX)导数,已经开发上线一个多月的一批报表,突然有同事说有个报表数据不准。出在时间字段上。
分析:
1、先看了原数据MySQL字段类型为datetime,目标字段为timestamp类型;
2、经发现所有时间的差距都是8小时,怀疑是因为时区转换的原因;
3、对比其他表,看看是大范围现象还是特殊情况,发现其他的同样情况字段的一样没有问题,也有改变为string字段类型的也没有问题;
2.解决办法
经过对比:发现DATAX(sqoop也类似)在转换MySQL datatime字段类型为hive的timestamp时会出现问题:默认先转为零食去对应时间戳,再转换为北京市区时间,就会使时间多8小时。
解决办法有两个:
1、转换为string类型;
2、继续用timestamp类型,但是需要行存储(即text存储)。
遇见时间类型转换问题时要小心,保守最好是string,简单的比较大小不会影响后续计算。
mysql到hive数据类型转换相关推荐
- 【hive】mysql到hive数据类型转换
1.类型映射关系 mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表. mys ...
- hive数据类型转换
博客地址:http://www.iteblog.com/ 文章标题:<Hive数据类型转换> 本文链接:http://www.iteblog.com/archives/892 Hadoop ...
- Hive系列 (六):Hive数据类型转换
文章目录 Hive系列文章 数据类型转换 Cast显示转换 数据类型转换表 日期类型转换说明 转换示例 Hive系列文章 Hadoop完全分布式搭建(腾讯云服务器+阿里云服务器) Hive系列 (一) ...
- 数据工具sqoop用法之mysql与hive数据导入导出
一.pom org.apache.hive hive-jdbc 1.1.0 org.apache.hadoop hadoop-common 2.6.0 org.mybatis mybatis 3.4. ...
- HIVE 数据类型转换
Hive内置数据类型由基本数据类型和复杂数据类型组成.今天的话题是Hive数据类型之间的转换.同Java语言一样,Hive也包括 隐式转换(implicit conversions)和显式转换(exp ...
- mysql数据库的数据类型转换_MySQL 和Server 2000 数据库中数据类型的转换
问题阐述 在某些特殊的时候,可能要将MySQL 数据库转换为SQL Server 2000 数据库,这时问题也就随之而来.例如,在MySQL 数据库中,创建的字段使用varchar 类型,该类型的数据 ...
- oracle到hive数据类型转换
oracle和hive中的数据类型存在差异,在oracle集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和oracle结构一致的表. oracle到hi ...
- mysql 类型 自动转化_自动MySQL数据类型转换
我刚刚碰到一个有趣的案例,在MySQL中进行数据类型转换.考虑以下查询: SELECT * FROM (SELECT 0 AS col) AS t WHERE t.col=123; #Yields 0 ...
- sqoop连接hive和mysql_用Sqoop进行Hive和MySQL之间的数据互导
Hive导数据入MySQL 创建mysql表 use anticheat; create table anticheat_blacklist( userid varchar(30) primary k ...
最新文章
- swiper超出部分出现滚动条
- Python全栈之路Day13
- java se 8 新特性_javase8-sample
- 噪声的频谱分析的重要意义_噪声测量:噪声源识别与定位的方法简析
- Linux性能监控工具
- 电脑应该如何升级bios版本
- python直角三角形的两个直角边、求斜边_直角三角形斜边公式计算器 两个直角边边长的平方加起来等...
- wireshark蓝牙数据包分析_Wireshark数据包分析
- 微软愿景:未来工作, 也可以这样,强
- 【GameMaker 极速入门】#1环境配置
- 固实压缩文件容易损坏_你不知道的压缩软件小技巧1
- 解决tar 时间戳XXX是未来的XXX秒之后问题
- Java 小练习(简单)—合集
- iOS 沙盒路径/创建文件夹
- android 绘画笔迹回放_Android画板 半透明画笔 笔迹叠加效果
- AD域帐号批量查询锁定帐号,批量解锁域帐号
- VB 6.0 如何在64位操作系统下运行!
- git push提示dst refspec XXX matches more than one
- 使用es6--对象数组的多种去重方式
- MFC_Session2