Impala/hbase 与浮点数据的矛盾

Posted

技术标签:

【中文标题】Impala/hbase 与浮点数据的矛盾【英文标题】:Impala/hbase contradiction with float data 【发布时间】:2013-12-12 15:44:50 【问题描述】:

我制作了一个 hive 外部表来指向一个 hbase 表(主要是用浮点数填充)。 cloudera 的文档告诉“Impala 自动将 FLOAT 转换为更精确的 DOUBLE 值”。但是当我查看 Hbase(这是行的真实值)和 Impala 时,我对所有行都有类似的东西:

行/列族的 Hbase 值:93.8447(插入的确切值)

对应的Impala值:93.8447036743

它看起来不像一个更精确的值。有没有办法摆脱转换?

【问题讨论】:

经过一番研究,我仍然找不到问题的解决方案......有人可以帮忙吗? 【参考方案1】:

我想通了。解决这个问题的最简单方法是创建一个开头为 double 的表,这样 Impala 就不必在创建表后对其进行转换,因此不会更改数据。

【讨论】:

【参考方案2】:

或者,您可以使用 ROUND() 函数来设置精度

【讨论】:

以上是关于Impala/hbase 与浮点数据的矛盾的主要内容,如果未能解决你的问题,请参考以下文章

如何在具有固定浮点的matlab中转换变量

计算机中的定点数与浮点数 浮点数用 正负位 幕数 数字部分来表示

1定点数与浮点数

为啥C++里面浮点与整数相乘的结果跟在计算器里的不一样呢?浮点我选的float

浮点型数据的精度是啥意思

为啥 SQL 浮点数与 C# 浮点数不同