hive 语法检查_升级Hive3处理语义和语法变更

由于在CDH或HDP中运行的Hive的早期版本与CDP中的Hive 3之间的语义变化,您需要执行许多与迁移相关的更改。Hive 3中与db.table引用和DROP CASCADE相关的一些语法更改可能需要对应用程序进行更改。

12e0cffc-f032-eb11-8da9-e4434bdf6706.svg

转换时间戳

将数字转换为时间戳的应用程序的结果从Hive 2到Hive 3有所不同。ApacheHive更改了CAST的行为以符合SQL标准,该标准不将时区与TIMESTAMP类型相关联。

升级到CDP之前

将数字类型值强制转换为时间戳可用于生成反映集群时区的结果。例如,1597217764557是2020-08-12 PDT。运行以下查询将数字转换为PDT中的时间戳:

> SELECT CAST(1597217764557 AS TIMESTAMP);| 2020-08-12 00:36:04 |

升级到CDP之后

将数字类型值转换为时间戳会产生反映UTC而不是集群时区的结果。运行以下查询将数字强制转换为UTC中的时间戳。

> SELECT CAST(1597217764557 AS TIMESTAMP);| 2020-08-12 07:36:04.557  |

需要采取的行动

更改应用程序。不要通过数字强制转换来获取本地时区。内置函数from_utc_timestamp和to_utc_timestamp可用于模拟升级前的行为。

12e0cffc-f032-eb11-8da9-e4434bdf6706.svg

检查字段变更的兼容性

默认配置更改可能导致更改列类型的应用程序失败。

升级到CDP之前

在HDP 2.x中hive.metastore.disallow.incompatible.col.type.changes默认值是false,阻止Hive不兼容的字段类型的变更。例如,您可以将STRING列更改为不兼容类型的列,例如MAP 。没有错误发生。

升级到CDP之后

在CDP中,hive.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值