синтаксический анализ CSV-файла с символами новой строки в одном из столбцов в каталоге AWS Athena / AWS Glue - PullRequest
0 голосов
/ 07 марта 2019

У меня есть пример данных, как показано ниже:

id,log,code,sequence
100,sample <(>&<)> O sample ? PILE UP - 3 sample,20,7^M$
101,sample- 4/52$
sample$
CM,21,7^M$
102,sample AT 3PM,22,4^M$

Во второй строке (id = 101) в столбце журнала есть символы новой строки, составляющие 3 строки из одной строки. Я включил опцию ": set list" в редакторе vim для отображения символов новой строки ($) и конца строки (^ M).

Для обработки символов новой строки AWS Рекомендуется OpenCSVSerde здесь . Я пытался использовать сериализацию OPENCSVSerde с escapeChar=\\, quoteChar=\", seperatorChar=, Тем не менее, он показывает данные в виде 5 строк, где мне нужно три строки. Когда я делаю запрос в Афине, id = 101 показывает только первую строку, а остальные отсутствуют:

id,log,code,sequence
101,sample- 4/52

Какие-либо советы или пример о том, как обрабатывать многострочные символы в столбце файла CSV?

Я изучаю пользовательские классификаторы, но пока не повезло.

1 Ответ

1 голос
/ 07 марта 2019

Согласно этому документу https://docs.aws.amazon.com/athena/latest/ug/csv.html opencsvserde не поддерживает разрывы строк.

Я вижу, что вы пытаетесь поместить туда какое-то бревно. Ваши варианты:

  • Очистить журнал, чтобы не включать разрывы строк. Или,

  • использовать regexserde, что бесполезно, если формат вашего журнала постоянно меняется. Или,

  • Если оба варианта не подходят, вы можете изменить формат ur с csv на паркет или что-то еще, где нет проблем с разрывом строки

...