【问题标题】:What is the supported range for Hive's Timestamp data typesHive 的 Timestamp 数据类型支持的范围是多少
【发布时间】:2017-03-31 01:37:13
【问题描述】:
  • Hadoop 发行版:HDP 2.4.2
  • Hive 版本:1.2.1

我有一个 ORC 表 tbl1timestamp 列。我插入了这些值:

insert into tbl1 values ('0001-01-01 00:00:20.0');
insert into tbl1 values ('9999-01-01 00:00:20.0');

我创建了另一个 ORC 表 tbl2 具有 timestamp 列。然后我尝试了:

insert into tbl2 select * from tbl1;

tbl2 中的数据已损坏:

1754-08-28 22:44:01.128654848
1815-03-31 05:56:28.066277376
  • 我是否使用了超出范围的值?
  • 时间戳有具体的范围吗?

此问题仅适用于ORC 文件格式。对于 textfileavroparquet 等其他文件格式,它工作正常。

【问题讨论】:

  • 问题无法在 Hive 1.1.0-cdh5.7.0 上重现
  • @DuduMarkovitz 我在 HDP 2.4.2 Hive 1.2.1 上测试过
  • 同样无法在 Hadoop 2.7.3.2.5.3.0-37、Hive 1.2.1000.2.5.3.0-37 上重现
  • @DuduMarkovitz 这可以在 Cloudera 发行版上复制。检查我对 Apache Hive 的回答。
  • 酷 :-) ......

标签: hive timestamp orc


【解决方案1】:

在我的例子中启用了 Hive 矢量化。

hive.vectorized.execution.enabled = true;

这是由于矢量化执行造成的问题。

在 1.3.0、2.0.1、2.1.0 中已修复

查看HIVE-9862wiki 了解更多详情。

要使用矢量化查询执行,您必须以 ORC 格式存储数据。这就是为什么错误只出现在 ORC 文件格式中的原因。

【讨论】:

    猜你喜欢
    • 2020-02-28
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多