![](/img/trans.png)
[英]StringType issue: Exception in thread "main" scala.MatchError: org.apache.spark.sql.types.StringType@
[英]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.