【发布时间】:2019-03-07 14:43:27
【问题描述】:
我正在对货币度量的 spark 十进制类型进行一些测试,并且在设置比例和精度时看到了一些奇怪的精度结果,如下所示。我想确保在计算过程中不会丢失任何数据,但下面的示例并不能保证这一点。谁能告诉我为什么 spark sql 会发生这种情况?当前版本为 2.3.0
val sql = """select cast(cast(3 as decimal(38,14)) / cast(9 as decimal(38,14)) as decimal(38,14)) val"""
spark.sql(sql).show
返回
+----------------+
| val|
+----------------+
|0.33333300000000|
+----------------+
【问题讨论】:
-
您的 SQL 在 Spark 2.2.1 上运行良好,产生 0.3333... 和 14
3s。 -
看起来有人为此创建了一张 JIRA 票证,并引用了这篇文章。谢谢。
标签: scala apache-spark apache-spark-sql