akka stream alpakka csv: поток не работает, когда неправильное количество столбцов читается из CSV-файла

Я читаю файл CSV из удаленного места (ftp), и файл имеет недопустимое количество столбцов.

Steam не работает, когда такие строки встречаются в файле. Мне нужно пропустить их с сообщением об ошибке и продолжить.

Вот что я пробовал. Стратегия надзора не работает.

source.via(CsvParsing.lineScanner() .withAttributes(ActorAttributes.supervisionStrategy(throwable -> Supervision.resume()))))

Мне нужно пропустить недопустимую строку с сообщением об ошибке и продолжить.

Образец данных: мой Csv имеет 5 полей в каждой строке.

1281,Export - Product Search Tags,0,Id,20
1282,Export - Product Search Tags,1,Id,10
1283,Export - Product Search Tags,2,Value,100

Если я удалю последнее поле во 2-й строке (т.е. 10). Тогда поток потерпит неудачу, он не будет читать следующую строку.


person Mallu Golageri    schedule 02.08.2019    source источник
comment
Что означает недопустимое количество столбцов в вашем случае? Alpakka CSV не проверяет количество столбцов.   -  person Enno    schedule 06.08.2019
comment
Обновлено описание некоторыми примерами данных. Отсутствие поля в строке приведет к разрыву потока.   -  person Mallu Golageri    schedule 11.08.2019


Ответы (1)


CsvParsing, похоже, не поддерживает наблюдение за актерами.

Вот как структурированы данные, см. документы. :

    Field Delimiter - separates the columns from each other (e.g. , or ;)
    Quote - marks columns that may contain other structuring characters (such as Field Delimiters or line break) (e.g. ")
    Escape Character - used to escape Field Delimiters in columns (e.g. \)
    Lines are separated by either Line Feed (\n = ASCII 10) or Carriage Return and Line Feed (\r = ASCII 13 + \n = ASCII 10).

В этом случае мы ожидаем, что поток завершится ошибкой MalformedCsvException в следующих случаях, см. внутренний класс CsvParser.scala.

1. Wrong escaping
2. No line end after the delimiter or when maximum line end is reached
3. No delimiter or end of line when quote end is reached
4. Unclosed quote

Пожалуйста, проверьте, когда столбец удален, что ни одно из этих условий не нарушено, и добавьте ошибку, с которой происходит сбой потока, чтобы сделать вопрос более описательным.

person Diana    schedule 15.08.2019