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。
任何建议,或者它是一个错误?