【问题标题】:Hive to support unsigned numeric data typeHive 支持无符号数字数据类型
【发布时间】:2017-03-02 15:34:19
【问题描述】:

我正在尝试将通常为无符号整数和无符号 Bigint 的数据加载到配置单元表中。根据 Hive 文档,我看到它只支持有符号整数和有符号大整数

INT/INTEGER(4 字节有符号整数,从 -2,147,483,648 到 2,147,483,647) BIGINT(8 字节有符号整数,来自 -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807)

有没有办法将无符号数值(tinyint、smallint、int、bigint)存储到 Hive 表中?

【问题讨论】:

  • 使用有符号 type 存储无符号 有什么问题 - 您担心该值可能高于最大值(例如INT 3,000,000,000)? Hive 文档建议使用DECIMAL(x,0) 来存储最多为x 位数的整数值,其中x 高于BIGINT 的容量(并且只要x
  • 是的,我在考虑如何存储给定数字类型的最大值。所以通过使用decimal我们可以存储unsigned max int value或者big int value。
  • @samson 谢谢。我正在寻找存储最大无符号整数/大整数值。小数(x,0)正在工作。

标签: hadoop types hive


【解决方案1】:

长话短说:摘自Hive documentation 关于DECIMAL 数据类型

Hive 中的 DECIMAL 类型基于 Java 的 BigDecimal,即 用于表示不可变的任意精度十进制数 ... 限制为 38 位 ...

从 Hive 0.13 开始,用户可以指定 规模和精度 创建表格时...
  ¤ 如果 未指定比例,默认为 0(无小数位)
¤ 如果未指定精度,则默认为 10。

大于 BIGINT 的整型文字必须使用 DECIMAL(38,0) 处理。后缀 BD 是必需的...

所以DECIMAL 绝对是您要查找的数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 2015-09-12
    • 1970-01-01
    • 2017-04-05
    相关资源
    最近更新 更多