AWS Glue Catalog не может обнаружить паркетные файлы, вместо этого создает корневой путь в виде единой таблицы.

У меня есть список из 500+ таблиц, хранящихся в AWS S3 в формате паркета. Структура следующая:

aws-bucket/
└── parquet/
    └── table1/t1.parquet
    └── table2/t2.parquet
    └── table3/t3.parquet
    └── table4/t4.parquet
    └── table5/t5.parquet
    └── table6/t6.parquet
    └── table7/t7.parquet
    └── table8/t8.parquet

Когда я запускаю Glue Crawler на «s3: // aws-bucket / parquet /» и пытаюсь создать базу данных Athena, он создает только таблицу с именем parquet, вместо того, чтобы создавать все 500+ таблиц. Я не пробовал настраивать параметры сканера.

Пожалуйста помоги.


person Aakash Basu    schedule 19.08.2019    source источник


Ответы (1)


Проверьте https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html?icmpid=docs_glue_console#crawler-grouping-policy.

Группирующее поведение для данных S3 (необязательно)

Создайте одну схему для каждого пути S3

По умолчанию, когда поисковый робот определяет таблицы для данных, хранящихся в S3, он учитывает как совместимость данных, так и сходство схемы. Установите этот флажок, чтобы сгруппировать совместимые схемы в одно определение таблицы для всех объектов S3 по указанному пути включения. Другие критерии по-прежнему будут учитываться для определения правильной группировки.

Отметьте эту опцию в консоли гусеничного клея. Будет создано 500+ таблиц

person Sandeep Fatangare    schedule 20.08.2019
comment
Я уже пробовал этот вариант, друг мой, тоже не работает. Он создает ту же паркетную таблицу в Athena DB и с большим, гораздо большим количеством столбцов (вероятно, взял столбцы из каждой таблицы). Это ошибка: Ваш запрос содержит следующие ошибки: HIVE_INVALID_METADATA: метаданные куста для паркета таблицы недействительны: дескриптор таблицы содержит повторяющиеся столбцы - person Aakash Basu; 20.08.2019
comment
Скорее всего, он содержит одно и то же имя для двух столбцов. Вы получаете сообщение об ошибке при создании таблиц с помощью сканера или при выполнении запроса в Афине? Я считаю, что это второй. Поделитесь схемой из каталога клеев для дальнейшего анализа - person Sandeep Fatangare; 20.08.2019
comment
Второй случай, сомнений нет. Есть ли программный способ добавления нескольких источников S3 к определенному искателю? Если да, то я могу запустить лямбда-функцию, чтобы получить полный путь ко всем объектам в этом месте и передать их поисковому роботу как отдельные источники. Я вижу очень мало ясности в документации для такого сценария, точно так же меньше обучающих видео по тому же самому. - person Aakash Basu; 20.08.2019
comment
Возможно только включение и исключение шаблона. Вы не можете добавить несколько источников s3 в сканер - person Sandeep Fatangare; 20.08.2019
comment
Вы можете добавить S3 в качестве хранилища данных. Вы можете добавить столько путей S3, сколько захотите, с помощью добавления другого хранилища данных. Подумал, смогу ли я построить список всех путей к таблицам, используя функцию AWS Lambda, код python. - person Aakash Basu; 20.08.2019
comment
Если не будут предоставлены дополнительные сведения о воспроизведении проблемы, я не смогу помочь. Вы можете попробовать использовать лямбда, но я предполагаю, что вы все равно можете столкнуться с той же ошибкой - person Sandeep Fatangare; 20.08.2019
comment
Проблема в том, что это конфиденциальные данные, которые трудно воспроизвести. И нет ошибки, когда я делаю папку за папкой вручную (полный путь / таблица1 /, полный путь / таблица2 / и т. Д.). Это терпит неудачу только тогда, когда я указываю путь до одного каталога, который содержит все папки. Это означает, что никаких проблем с данными или схемой нет, только то, что сканеру нужны дополнительные данные для разделения таблиц внутри паркетной папки (я знаю все его объекты в S3 и никакой фактической папки / каталога как таковой). - person Aakash Basu; 21.08.2019
comment
Согласно документам. aws.amazon.com/athena/latest/ug/, похоже, ваше предложение добавить еще одно хранилище данных - единственный вариант для вас. Вроде для формата паркета, как-то выдает ошибку HIVE_INVALID_METADATA - person Sandeep Fatangare; 21.08.2019