Как обрабатывать CSV с разными столбцами в CDAP (Datafusion)?

У меня есть случай, когда я получаю несколько CSV от третьих лиц (немного сложно заставить их изменить формат), и эти CSV должны иметь одинаковые столбцы, но иногда один или несколько столбцов отсутствуют. Если я использую файл CDAP (чтение как текст), за которым следует Wrangler для обработки CSV, Wrangler со следующей директивой:

parse-as-csv :body '\\t' true
cleanse-column-names 

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

До сих пор я пытался использовать файл для чтения как blob и вывода в байтах с Wrangler, настроенным с помощью этой директивы:

set-type :body string
parse-as-csv :body '\t' true
cleanse-column-names

Но теперь у меня даже нет вывода (или ошибки), поэтому я не знаю, как разбирать эти неоднородные файлы. Сможет ли CDAP справиться с этим случаем? Если да, то как?


person Felipe    schedule 28.01.2020    source источник


Ответы (1)


Вы можете использовать директиву set -column, чтобы добавить новые столбцы к файлам, в которых нет всех необходимых столбцов. По большому счету, я бы рекомендовал вам изучить все документацию по директивам для предварительной обработки ваших файлов.

Надеюсь, это поможет.

person Alejandro    schedule 29.01.2020
comment
Проблема в том, что столбцы не выравниваются, например, в одном файле у меня есть столбцы A | B | C | D, а во втором файле - только столбцы A | C | D, как я могу справиться с этим случаем? - person Felipe; 29.01.2020
comment
В этом случае я бы использовал Python pandas для предварительной обработки данных; Я думаю, что нет директивы, которая бы выполняла именно то, о чем вы просите. - person Alejandro; 30.01.2020
comment
если столбец B всегда отсутствует, вы можете использовать set-column: B exp: {...} - person Nitin Motgi; 07.02.2020