专栏首页Hadoop实操0472-Hive中TimeStamp精度问题分析

0472-Hive中TimeStamp精度问题分析

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

文档编写目的

Hive中使用TimeStamp时,时间戳默认是精确到秒的,那在Hive中如何处理需要精确到毫秒的时间戳呢?本篇文章Fayson主要说明下Hive时间戳的转换及使用。

  • 测试环境

1.RedHat7.2

2.CM和CDH版本为5.15.0

2

Hive中TimeStamp获取及转换

1.Hive中使用current_timestamp()函数获取当前时间

select current_timestamp();

使用Hive的current_timestamp()函数获取到当前的时间精确到毫秒。

2.Hive中获取当前时间戳,默认使用unix_timestamp()函数

select unix_timestamp(current_timestamp());

使用Hive的unix_timestamp()函数获取到当前的时间戳为10位的bigint类型数值,该数值只精确到秒级别。

3.Hive中将时间戳转换为日期类型,默认使用from_unixtime ()

select from_unixtime(1543735779, 'yyyy-MM-dd HH:mm:ss:SSS');

上面的转换结果可以看到时间的毫秒是无法正常获取到,因为时间戳只是精确到秒级别的,from_unixtime()函数也只支持秒级别的时间戳转换。

4.Hive中获取毫秒级别的时间戳

select current_timestamp(), cast(current_timestamp() as double) * 1000 as timestamp;

这里可以看到获取到了一个13位的数值,该数值精确到毫秒即为当前的时间的时间戳。

5.Hive中处理毫秒级别的时间戳

select to_utc_timestamp(1543736635303, 'GMT');

使用Hive提供的to_utc_timestamp()函数将毫秒级别的时间戳转换为相应的时间并且精确到了毫秒,与上一步获取时间戳的时间一致。

3

总结

1.Hive中获取时间戳的方式为unix_timestamp()函数,该函数只能够精确到秒级别的时间,对于时间精确到要求高的应用则该函数并不适合。

2.Hive获取当前时间毫秒级别的时间戳时需要使用cast函数将current_timestamp()转为double类型并乘以1000,则得到毫秒级别的时间戳。

3.对于Hive库中存储的毫秒精度的时间戳,为了确保时间精度不损失则需要使用to_utc_timestamp()函数,该函数支持毫秒级别的时间错,但需要指定当前时区。

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Hive中的Timestamp类型日期与Impala中显示不一致分析

    Hive表中存储的Timestamp类型的字段显示日期与Impala中查询出来的日期不一致。

    Fayson
  • 当Impala碰到由Hive生成的timestamp数据

    Fayson
  • 如何在Impala中实现拉链表

    拉链表是针对数据仓库设计中表存储数据的方式而定义的,即是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。传统数据仓库一般采用拉链的方式保留主数据(...

    Fayson
  • 文件的基本操作

        w  ---- 只写模式,不能调用read()进行读操作,如果打开一个已存在的文件,会先清空内容

    py3study
  • 知识点:工业机器人的组成和分类

      (一)工业机器人的组成   工业机器人一般由操作机、驱动装置和控制系统等部分组成。 ?  1.操作机。也称执行机构,由末端执行器、手腕、手臂和机座组成。...

    机器人网
  • 实验楼课程管理程序-深入学习《C++ Primer第五版》实验报告&学习笔记1

    本片博客为实验楼的训练营课程深入学习《C++ Primer第五版》的实验报告和学习笔记。

    用户7043923
  • Oracle导入导出的常见错误

    做数据的导入导出操作,最常用的就是imp/exp和impdp/expdp,经常会碰见各种错误,之前总结过一些,《解决导入过程中出现的ORA-02289错误》、《...

    bisal
  • Redis分布式锁的正确实现方式

    数据库乐观锁 基于Redis的分布式锁 基于Zookeeper的分布式锁 本文介绍的是基于Redis的分布式锁;

    stys35
  • linux shell 获取java版本号

    说明: 在shell中要获取java版本号最基本的思路就是从java -version 的输出内容中解析出版本号,但是java -version 的输出并不是...

    用户1148648
  • log4j2 与 spring mvc整合

    log4j2不仅仅是log4j的简单升级,而是整个项目的重构,官网地址:http://logging.apache.org/log4j/2.x/,大家可以从官网...

    菩提树下的杨过

扫码关注云+社区

领取腾讯云代金券