我加載有〜500000條記錄,如本如何解決java.lang.NumberFormatException:空
ROW_ID, COLOR_CODE, SHADE_ID
21, 22, 321
23, 31, 321
文件我加載這樣的:
val colorSchema = StructType(Array(
StructField("ROW_ID", IntegerType, true),
StructField("COLOR_CODE", IntegerType, true),
StructField("SHADE_ID", IntegerType, true)
def makeSchema(filename:String, tableName:String,
tableSchema:StructType,uri:String){
val table = spark.read.
format("com.databricks.spark.csv").
option("header", "true").
schema(tableSchema).load(uri+filename).cache()
table.registerTempTable(tableName.toUpperCase)
}
makeSchema("colors.csv","colors",colorSchema,"s3://bucket/")
上面的代碼運行精細。然而,當我運行下面的查詢,我得到一個錯誤java.lang.NumberFormatException: null
val r = spark.sql("select * from colors where COLOR_CODE = 22").take(1)
我在做什麼錯?我怎樣才能以有效的方式發現這個問題?我已經在視覺上掃描的文件,看看是否有COLOR_CODE
缺失值,但我看不到任何目視......
更新
我問另外一個問題是縮小了的問題進一步。 CSV現在只有1行,我仍然得到相同的錯誤。 https://stackoverflow.com/questions/40564201/how-to-resolve-java-lang-numberformatexception-null-in-spark-sql
某處「String」試圖將其解析爲數字類型,但「String」格式不正確。雖然我看不到。 –
我假設SQL數據庫將'ROW_ID','COLOR_CODE'或'SHADE_ID'存儲爲'varchar'而不是'int',但這只是一個猜測。 –
也許與此相關:https://github.com/databricks/spark-csv/issues/192 –