0014-Hive中的Timestamp类型日期与Impala中显示不一致分析
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.问题描述
Hive表中存储的Timestamp类型的字段显示日期与Impala中查询出来的日期不一致。
2.问题复现
1.创建一个简单的测试表
2.向表中插入一条测试数据
insert into date_test4 values(1,'1503751615','2017-08-26 08:46:55');
获取当前系统时间存入表中:
3.通过Hive查询时间显示如下
select id,create_date_str,from_unixtime(create_date) from date_test4;
4.通过Impala查询时间显示如下
select id,create_date_str,cast(create_date as timestamp) from date_test4;
可以看到通过Hive查询看到的时间与通过Impala查询看到的时间不一致;
3.问题分析
3.1Hive的from_unixtime
Hive官网from_unixtime函数说明:
Return Type | Name(Signature) | Description |
---|---|---|
string | from_unixtime(bigint unixtime, string format) | Converts the number of seconds from unix epoch (1970-01-01 00:00:00 UTC) to a string representing the timestamp of that moment in the current system time zone in the format of "1970-01-01 00:00:00". |
在Hive中通过from_unixtime函数将TIMESTAMP时间戳转换成当前时区的日期格式的字符串,默认格式为“yyyy-MM-dd HH:mm:ss”,所以Hive在查询的时候能正确的将存入的时间戳转成当前时区的时间;
3.2Impala的TIMESTAMP
默认情况下,Impala不会使用本地时区存储时间戳,以避免意外的时区问题造成不必要的问题,时间戳均是使用UTC进行存储和解释。具体说明请参考官方文档:
http://impala.apache.org/docs/build/html/topics/impala_timestamp.html#timestamp
4.解决方法
使用Impala的from_utc_timestamp函数指定时区进行时间转换,事例如下:
select id,create_date_str, cast(create_date as timestamp),from_utc_timestamp(cast(create_date as timestamp), 'EDT') from date_test4;
指定时区后时间与原始Hive中显示时间一致,时区查看参考如下地址:
http://zh.thetimenow.com/time-zones-abbreviations.php
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
0013-如何在Kerberos与非Kerberos的CDH集群BDR不可用时复制数据
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 1.概述 本文档描述了在Kerberos与非Kerberos的CDH集群之间BDR不可用的情况下实现数据互导。文档主要讲述 1.测试集群环境描述 2.CDH的BDR功能验证 3.集群之间数据复制要求和限制 4.集群之间数据复制的方式 5.使用DistCp复制数据注意事项 6.通过DistCp进行数据互导 这篇文档将着重介绍CDH Kerberos集群与非Kerberos集群之间BDR不可用的情况下实现数据互导,并基于以下假设: 1.Kerberos集群与非Kerberos集群已搭建完成,并正常运行 2.两个集群都安装了HttpFS服务 2.测试集群环境描述 以下是对本次测试环境,但不是本操作手册的硬限制: 源集群(非Kerberos) 目标集群(Kerberos) http://52.221.181.252:7180/ http://172.31.8.141:7180/ CDH5.12.0 CDH5.11.1 root用户操作 ec2-user用户操作 操作系统CentOS 6.5 操作系统CentOS 6.5 3.CDH...
- 下一篇
0015-如何使用Sentry管理Hive外部表权限
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 1.文档编写目的 本文档主要讲述如何使用Sentry对Hive外部表权限管理,并基于以下假设: 1.操作系统版本:RedHat6.5 2.CM版本:CM 5.11.1 3.集群已启用Kerberos和Sentry 4.采用具有sudo权限的ec2-user用户进行操作 2.前置准备 2.1创建外部表数据父目录 1.使用hive用户登录Kerberos [root@ip-172-31-8-141 1874-hive-HIVESERVER2]# kinit -kt hive.keytab hive/ip-172-31-8-141.ap-southeast-1.compute.internal@CLOUDERA.COM [root@ip-172-31-8-141 1874-hive-HIVESERVER2]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: hive/ip-172-31-8-141.ap-southeast-1.compute.internal@...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS关闭SELinux安全模块
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19