CSV-контент читается как ноль с Spark - PullRequest
3 голосов
/ 04 июня 2019

Я пытаюсь прочитать файл CSV, чтобы я мог запросить его с помощью Spark SQL.CSV выглядит следующим образом:

16;10;9/6/2018

Файл CSV не содержит заголовков, но мы знаем, что первый столбец - это код отдела, второй столбец - это строительный код, а третий столбец - это дата формата m / d / YYYY.

Я написал следующий код для загрузки CSV-файловv с пользовательской схемой:

 StructType sch = DataTypes.createStructType(new StructField[] {
            DataTypes.createStructField("department",  DataTypes.IntegerType, true),
            DataTypes.createStructField("building", DataTypes.IntegerType, false),
            DataTypes.createStructField("date", DataTypes.DateType, true),


    });
    Dataset<Row> csvLoad = sparkSession.read().format("csv")
            .option("delimiter", ";")
            .schema(sch)
            .option("header","false")
            .load(somefilePath);
    csvLoad.show(2);

Когда я использую csvLoad.show(2), он показывает только вывод ниже:

|department|building|date|
+----------+---------+---+
|null      |null     |null |
|null      |null     |null |

Может кто-нибудь сказать, что не так в коде?Я использую версию spark 2.4.

1 Ответ

2 голосов
/ 04 июня 2019

Проблема связана с вашим полем date, так как оно имеет собственный формат, вам необходимо указать формат в качестве опции:

Dataset<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|
+----------+--------+----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...