我正在使用Apache Spark的SQL来处理结构化Bigdata。我特别使用Spark SQL的数据类型,特别是DecimalType,它支持存储的数量比来自sparkSQL的任何其他数据类型要多,但最高可达38精度,即使根据文档:http://spark.apache.org/docs/latest/sql-programming-guide.html#data-types,您可以找到: {3}}和它在内部使用Scala语言的BigDecimal,它允许精确约。 2 ^ 32。为什么会这样?
我需要实现scala的BigDecimal和sparkSQL提供的相同功能。我可以了解如何通过这种方式或任何其他方式实现解决方案吗?
答案 0 :(得分:0)
引擎盖下的火花使用Java的BigDecimal。
https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html
BigDecimal由 任意精度整数非标度值和32位整数 规模。如果为零或正数,则小数位数是位数 小数点右边。如果为负,则不定比例的值 数乘以十,得出标度的负数。 因此,由BigDecimal表示的数字的值是 (unscaledValue×10-scale)。