雖然我正在嘗試使用小數類型創建數據框,但它會拋出以下錯誤。創建Dataframe時DecimalType問題
我執行以下步驟:
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)
//創建的模式沒有任何errors.But是越來越創建
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)
DF1,當我發出的df1.collect()動作,它給我下面的錯誤:
scala.MatchError: 0 (of class java.lang.String)
at org.apache.spark.sql.catalyst.CatalystTypeConverters$DecimalConverter.toCatalystImpl(CatalystTypeConverters.scala:326)
test_file.txt內容:
test1,0
test2,0.67
test3,10.65
test4,-10.1234567890
是否有任何問題,我創建DecimalType的方式?
閱讀一切,StringType和投以後DecimalType。 – philantrovert