我已將我的記錄保存爲parquet格式並使用Spark1.5。但是,當我試圖把它拿來拋出異常SQLcontext將字符串字段更改爲Long:Spark 1.5
java.lang.ClassCastException列:java.lang.Long中不能轉換爲org.apache.spark.unsafe.types.UTF8String。
在寫作實木複合地板時,此字段將保存爲字符串。因此,這裏的示例代碼和輸出相同..
logger.info("troubling thing is ::" +
sqlContext.sql(fileSelectQuery).schema().toString());
DataFrame df= sqlContext.sql(fileSelectQuery);
JavaRDD<Row> rdd2 = df.toJavaRDD();
*第一行代碼(記錄器)打印此:
煩惱的事是:: StructType(StructField(BATCH_ID,StringType ,true))*
但是在出現異常之後的那一刻。
任何想法爲什麼它將該字段視爲Long
? (是關於專欄的一個獨特的東西,它總是一個數字,例如時間戳)。
任何幫助表示讚賞。
你檢查元數據? – zero323
我真的建議你使用Scala而不是Java,但是你可以使用udf並改變操作後返回的數據類型,在Scala中它很簡單 –