作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试使用十进制类型创建数据框时,它抛出了以下错误。
我正在执行以下步骤:
import org.apache.spark.sql.Row;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;
import org.apache.spark.sql.types.StringType;
import org.apache.spark.sql.types.DataTypes._;
//created a DecimalType
val DecimalType = DataTypes.createDecimalType(15,10)
val sch = StructType(StructField("COL1",StringType,true)::StructField("COL2",**DecimalType**,true)::Nil)
val src = sc.textFile("test_file.txt")
val row = src.map(x=>x.split(",")).map(x=>Row.fromSeq(x))
val df1= sqlContext.createDataFrame(row,sch)
scala.MatchError: 0 (of class java.lang.String)
at org.apache.spark.sql.catalyst.CatalystTypeConverters$DecimalConverter.toCatalystImpl(CatalystTypeConverters.scala:326)
test1,0
test2,0.67
test3,10.65
test4,-10.1234567890
最佳答案
您应该有一个 BigDecimal
实例来转换为 DecimalType
。
val DecimalType = DataTypes.createDecimalType(15, 10)
val sch = StructType(StructField("COL1", StringType, true) :: StructField("COL2", DecimalType, true) :: Nil)
val src = sc.textFile("test_file.txt")
val row = src.map(x => x.split(",")).map(x => Row(x(0), BigDecimal.decimal(x(1).toDouble)))
val df1 = spark.createDataFrame(row, sch)
df1.collect().foreach { println }
df1.printSchema()
[test1,0E-10]
[test2,0.6700000000]
[test3,10.6500000000]
[test4,-10.1234567890]
root
|-- COL1: string (nullable = true)
|-- COL2: decimal(15,10) (nullable = true)
关于scala - 创建 Dataframe 时的 DecimalType 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45706764/
由于过程过于复杂,我需要将表示数据类型的字符串转换为实际的 org.apache.spark.sql.types 数据类型。我有一个几乎可以工作的简单函数。 def getType (s: Strin
当我尝试使用十进制类型创建数据框时,它抛出了以下错误。 我正在执行以下步骤: import org.apache.spark.sql.Row; import org.apache.spark.sql.
类型转换 DecimalType(10,5 ) 例如99999.99999至 DecimalType( 5,4) 在 Apache Spark 中默默返回 null 在这种情况下,是否可以更改此行为并
我是一名优秀的程序员,十分优秀!