Hive 数据类型:双精度和小数位数

Pra*_*osh 0 double hadoop hive double-precision

我正在使用 CDH 5.3.0 和 Hive 0.12。我有一个 Hive 表,其中的列定义为双精度。

我正在将数据从 HDFS 序列文件加载到这些双列,小数点后精度为 2。例如,在我的 HDFS 序列文件中,我的数据类似于 - 100.23 或 345.00。我需要选择 double 因为我的数据值可以是一个很大的值,比如“3457894545.00”

我的要求是在查询 Hive 表时在小数点后显示两个刻度精度。因此,对于上面提到的示例数据,如果我查询此列,则需要将值视为“100.23”或“345.00”。

但是对于 Hive 0.12,我只能得到小数点后的单精度,即值被截断为“100.2”或“345.0”。

我尝试使用“decimal”数据类型给出的语法为“decimal(3,2)”,但在这种情况下,我的值​​完全四舍五入,即“100”或“345”。

我一直在寻找是否有任何选项可以将自定义精度定义为 double 数据类型,并发现可以从 hive 0.13 on wards 给出自定义精度。

Is Hive 0.12 double 数据类型仅显示小数点后的单精度。我是否需要应用任何自定义修复。请建议。

提前致谢。

小智 5

您应该声明为decimal(5,2).

语法是DECIMAL(precision, scale). 精度是指这个数字的位数,包括点后的位数。