如何在Scala中读取38精度18刻度的十进制数据
我在RDBMS中有十进制(38,16)类型的数据。我正在以拼花文件格式将这些数据导入HDFS(Hadoop)。在那之后,我将拼花地板文件读入Spark代码如何在Scala中读取38精度18刻度的十进制数据,scala,apache-spark,hadoop,apache-spark-sql,Scala,Apache Spark,Hadoop,Apache Spark Sql,我在RDBMS中有十进制(38,16)类型的数据。我正在以拼花文件格式将这些数据导入HDFS(Hadoop)。在那之后,我将拼花地板文件读入Spark代码 val df = spark.read.parquet(<path>) 为了解决这个问题,我必须举一个简单的例子 比如说, val dt = Array(1,88.2115557137985,223.7658213615901501) 输出: scala> df.printSchema root |-- id: int
val df = spark.read.parquet(<path>)
为了解决这个问题,我必须举一个简单的例子
比如说,
val dt = Array(1,88.2115557137985,223.7658213615901501)
输出:
scala> df.printSchema
root
|-- id: integer (nullable = true)
|-- cnt: double (nullable = true)
scala> dt.foreach(println)
1.0
88.2115557137985
223.76582136159016
但在这里,我期待着,因为它是数据,没有四舍五入的价值
提前感谢。在读取拼花地板文件时,您可以预定义您的模式以生成高精度列
DecimalType
:
import org.apache.spark.sql.types._
val customSchema = StructType(Array(
StructField("id", IntegerType, true),
StructField("cnt", DecimalType(38, 16), true)
))
val df = spark.read.schema(customSchema).parquet("/path/to/parquetfile")
在读取拼花地板文件时,可以预定义模式,使高精度列
DecimalType
:
import org.apache.spark.sql.types._
val customSchema = StructType(Array(
StructField("id", IntegerType, true),
StructField("cnt", DecimalType(38, 16), true)
))
val df = spark.read.schema(customSchema).parquet("/path/to/parquetfile")
示例数组和您提供的架构不匹配。不清楚你在问什么。Scala 2.11.8 repl将输出显示为输入,无需舍入。您还需要这方面的帮助吗?示例数组和您提供的架构不匹配。不清楚你在问什么。Scala 2.11.8 repl将输出显示为输入,无需舍入。你还需要帮助吗?