我在rdbms中有decimal(38,16)类型的数据。我正在以Parquet文件格式将这些数据导入hdfs(hadoop)。在那之后,我正在把Parquet地板文件读入spark代码。
val df = spark.read.parquet(<path>)
一旦数据加载到spark dataframe中,该列的数据类型就转换为double。它是对价值的四舍五入 cnt
列到小数点后14位,而我在小数点后有16位。
架构:
scala> df.printSchema
root
|-- id: integer (nullable = true)
|-- cnt: double (nullable = true)
为了解决这个问题,我必须举一个简单的例子。
例如,
val dt = Array(1,88.2115557137985,223.7658213615901501)
输出:
scala> dt.foreach(println)
1.0
88.2115557137985
223.76582136159016
但在这里,我期待的是,因为它是数据,没有四舍五入的价值。
提前谢谢。
1条答案
按热度按时间dba5bblo1#
您可以预定义模式以生成高精度列
DecimalType
读取Parquet地板文件时: