0
我嘗試讀取除了字符串和整數之外還包含Date值的平面文件(csv)。 因此,而不是隻使用長/字符串日期字段將很好,以獲得包含日期值的對象。如何在Spark Java Map函數中使用sql.date與SparkSQL
的代碼,我有如下:
JavaRDD<Date> dates = sc.textFile("hdfs://0.0.0.0:19000/Dates.csv").map(
new Function<String, Date>(){
@Override
public Date call(String line){
String[] fields = line.split(",");
return Date.valueOf(fields[2]);
}
});
DataFrame schemaTransactions = sqlContext.createDataFrame(dates, Date.class);
schemaTransactions.registerTempTable("dates");
DataFrame dAs = sqlContext.sql("SELECT * FROM dates");
Row[] dARows = dAs.collect();
代碼編譯但在執行時,該錯誤消息
Exception in thread "main" java.lang.ClassCastException: org.apache.spark.sql.types.DateType$ cannot be cast to org.apache.spark.sql.types.StructType
拋出這是令人迷惑,因爲文檔賽斯的java。 sql.Date將被支持https://spark.apache.org/docs/latest/sql-programming-guide.html
當我使用sql.Timestamp時會發生同樣的錯誤。
但是,我最初的目標是使用Java8中的LocalDateTime,但由於這不受支持,我嘗試使用sql.Date。
任何建議,或者它是一個錯誤?