Можно ли сохранить разрывы строк в кавычках при чтении многострочных файлов CSV в Spark? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть файл CSV с разрывом строки в кавычках в третьей строке (первая строка - заголовок CSV).

data / testdata.csv

"id", "description"
"1", "some description"
"2", "other description with line
break"

Независимо от того, правильный ли он CSV или нет, я должен разобрать его в действительные записи.Это то, что я пробовал

public class Main2 {

    public static void main(String[] args) {
        SparkSession spark = SparkSession.builder()
            .master("local[4]")
            .getOrCreate();
        Dataset<Row> rows = spark
            .read()
            .format("csv")
            .option("header", "true")
            .load("data/testdata.csv");

        rows
            .foreach(row -> System.out.println(row));
    }
}

И вывод такой, как показано ниже:

[1, "some description"]
[2, "other description with line]
[break",null]

Как видите, Spark обрабатывает break" как новую запись и заполняет отсутствующие столбцы нулем.Вопрос в том, есть ли какая-либо опция для анализатора CSV в Spark, которая допускает такие разрывы строк?

Я попробовал приведенный ниже код ( ссылка ), но он не работает

Dataset<Row> rows = spark.read()
    .option("parserLib", "univocity")
    .option("multiLine", "true")
    .csv("data/testdata.csv");

1 Ответ

0 голосов
/ 23 января 2019

Согласно этой статье , начиная с spark 2.2.0, существует возможность разбора многострочных CSV-файлов.В моем случае эти настройки делают работу:

sparkSession
    .read()
    .option("sep", ";")
    .option("quote", "\"")
    .option("multiLine", "true")
    .option("ignoreLeadingWhiteSpace", true)
    .csv(path.toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...