0
点赞
收藏
分享

微信扫一扫

如何强制Hive使用指定时区而非操作系统时区

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。


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


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


1.文档编写目的



在部署CDH集群时由于OS的操作系统指定的时区是UTC,这时如果我们不想修改集群操作系统的时区,在查询数据时如何强制Hive使用指定时区,接下来的文章就介绍如何为Hive指定时区。


  • 内容概述

1.测试前环境查看

2.指定Hive时区

3.验证时区是否生效


  • 测试环境

1.CM5.14.3/CDH5.14.2


2.指定前环境查看



1.集群的操作系统时区如下


如何强制Hive使用指定时区而非操作系统时区_hive


此时操作系统的时区为UTC


2.使用HiveCLI查看当前时间


[root@ip-172-31-5-171 ~]# hive
hive> SELECT current_timestamp()
> ;
OK
2018-05-07 17:31:10.223
Time taken: 2.169 seconds, Fetched: 1 row(s)
hive> [root@ip-172-31-5-171 ~]#
[root@ip-172-31-5-171 ~]# date
Mon May 7 17:31:22 UTC 2018
[root@ip-172-31-5-171 ~]#

(可左右滑动)


如何强制Hive使用指定时区而非操作系统时区_hadoop_02


3.使用Beeline查看当前时间


[root@ip-172-31-5-171 ~]# date
Mon May 7 17:40:24 UTC 2018
[root@ip-172-31-5-171 ~]# beeline
beeline> !connect jdbc:hive2://ip-172-31-8-230:10000 hive hive
0: jdbc:hive2://ip-172-31-8-230:10000> SELECT current_timestamp();
INFO : OK
+--------------------------+--+
| _c0 |
+--------------------------+--+
| 2018-05-07 17:40:39.445 |
+--------------------------+--+
1 row selected (1.393 seconds)
0: jdbc:hive2://ip-172-31-8-230:10000>

(可左右滑动)


如何强制Hive使用指定时区而非操作系统时区_hadoop_03


如上测试可以看到通过HiveCLI和HiveServer2访问Hive查询当前时间均与OS的时间一致。


3.修改Hive配置指定时区



1.使用管理员登录Cloudera Manager,进入Hive服务


如何强制Hive使用指定时区而非操作系统时区_hadoop_04



2.点击“配置”,进入配置页面并搜索“opt”,在JVM参数中增加如下配置

在JVM的启动参数中增加时区的参数设置为上海时区


-Duser.timezone=Asia/Shanghai

(可左右滑动)


如何强制Hive使用指定时区而非操作系统时区_图片放大_05


3.保存更改后,回到CM主页根据提示重启Hive相关服务


如何强制Hive使用指定时区而非操作系统时区_hadoop_06


4.测试时区是否生效



1.使用HiveCLI查看Hive的当前时间


如何强制Hive使用指定时区而非操作系统时区_图片放大_07


2.使用Beeline登录查询


如何强制Hive使用指定时区而非操作系统时区_hadoop_08


通过如上测试可以看到Hive使用的是我们指定的上海时区,而非操作系统的时区。


5.总结



指定Hive时区时需要同时指定HiveServer2和Hive客户端的时区,否则通过HiveCLI和Beeline查询出来的时间显示不一致。



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


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。



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

如何强制Hive使用指定时区而非操作系统时区_图片放大_09

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操


举报

相关推荐

0 条评论