Афина помещает данные в неправильные столбцы при изменении формата входных данных - PullRequest
0 голосов
/ 12 июня 2019

У нас есть несколько отчетов .txt с разделителем каналов, поступающих в папку в S3, для которой мы запускаем Glue Crawler, чтобы определить схему и запрос в Афине.

Формат отчета недавно изменился, поэтому существует двановые столбцы посередине.

Старые файлы:

Columns A  B  C  D  E  F
Data    a1 b1 c1 d1 e1 f1

Новые файлы с дополнительными столбцами "G" и "H":

Columns A  B  G  H  C  D  E  F
Data    a2 b2 g2 h2 c2 d2 e2 f2

Что мы получаем втаблица, созданная сканером, как видно из Афины:

Columns A  B  C  D  E  F  G  H    <- Puts new columns at the end. OK
Data    a1 b1 c1 d1 e1 f1         <- Correct for old data
Data    a2 b2 g2 h2       e2 f2   <- 4 columns incorrect and 2 missing

Это какая-то ошибка в сканере клея, или есть способ настроить ее так, чтобы она помещала правильные данные в правильные столбцы (другиечем запустить скрипт очистки данных для преобразования входных файлов)?

1 Ответ

1 голос
/ 14 июня 2019

Я думаю, что это еще один случай, когда Клей был слишком многообещающим и недоработанным. Пока формат данных разделен текстом, Glue будет делать неправильно, если вы добавляете столбцы посередине. Добавление или удаление (но не обоих) столбцов в конце работает, но не в середине. Athena не поддерживает разные столбцы для разных разделов, поэтому Glue не может сделать эту работу, но выглядит так, как может.

Вам придется либо переписать данные, изменить, чтобы добавить столбцы последними, либо переключиться на другой формат данных, где файлы содержат достаточно метаданных, чтобы это не было проблемой: JSON, Avro или Parquet.

Я бы посоветовал вам вообще отказаться от сканеров Glue, похоже, это общий инструмент, но он действительно решает несколько вариантов использования. См. https://stackoverflow.com/a/56439429/1109 для некоторых предложений о том, что делать вместо этого.

...