簡體   English   中英

為什么org.apache.spark.sql.types.DecimalType的最大精度值在SparkSQL中是38?

[英]why org.apache.spark.sql.types.DecimalType's max precision value is 38 in SparkSQL?

我正在使用Apache Spark的SQL來處理結構Bigdata。 我特別使用Spark SQL的數據類型,特別是DecimalType,它支持存儲的數量比來自sparkSQL的任何其他數據類型最多,但是根據文檔可以達到38精度: http ://spark.apache.org/docs/latest/sql- programming-guide.html#data-types ,你可以找到: 在此輸入圖像描述 它在內部使用Scala語言的BigDecimal,允許精度約。 2 ^ 32。 為什么會這樣?

我需要實現scala的BigDecimal和sparkSQL提供的相同功能。 我可以了解如何通過這種方式或任何其他方式實現解決方案嗎?

在引擎蓋下spark使用Java的BigDecimal。

https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html

BigDecimal由任意精度整數非標度值和32位整數標度組成。 如果為零或正數,則比例是小數點右側的位數。 如果是負數,則將數字的未縮放值乘以10來表示比例的否定。 因此,BigDecimal表示的數字的值是(unscaledValue×10-scale)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM