我正在尝试读取CSV文件,以便可以使用Spark SQL查询它. CSV如下所示:
16;10;9/6/2018
CSV文件不包含标题,但是我们知道第一列是部门代码,第二列是建筑代码,第三列是格式为m / d / YYYY的日期.
StructType sch = DataTypes.createStructType(new StructField[] {
DataTypes.createStructField("department",DataTypes.IntegerType,true),DataTypes.createStructField("building",false),DataTypes.createStructField("date",DataTypes.DateType,});
Dataset<Row> csvLoad = sparkSession.read().format("csv")
.option("delimiter",";")
.schema(sch)
.option("header","false")
.load(somefilePath);
csvLoad.show(2);
|department|building|date|
+----------+---------+---+
|null |null |null |
|null |null |null |
谁能告诉我代码中有什么问题吗?我正在使用spark 2.4版本.
最佳答案
问题在于您的日期字段,因为它具有自定义格式,因此您需要将格式指定为选项:
原文链接:https://www.f2er.com/java/532956.htmlDataset<Row> csvLoad = sparkSession.read().format("csv")
.option("delimiter",";")
.schema(sch)
.option("header","false")
.option("dateFormat","m/d/YYYY")
.load(somefilePath);
这将导致输出:
+----------+--------+----------+
|department|building| date|
+----------+--------+----------+
| 16| 10|2018-01-06|
+----------+--------+----------+