Должен ли я каждый раз запускать краулер Glue для получения последних данных?

У меня есть корзина S3 с именем Сотрудник. Каждые три часа я буду получать файл в корзине с прикрепленной к нему меткой времени. Я буду использовать задание Glue, чтобы переместить файл из S3 в Redshift с некоторыми преобразованиями. Мой входной файл в ведре S3 будет иметь фиксированную структуру. My Glue Job будет использовать в качестве входных данных таблицу, созданную в каталоге данных с помощью поискового робота.

Первый забег:

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "test", table_name = "employee_623215", transformation_ctx = "datasource0")

Если через три часа я получу еще один файл для сотрудника, нужно ли сканировать его снова?

Есть ли способ иметь единую таблицу в каталоге данных, такую ​​как сотрудник, и обновить таблицу с помощью последнего файла S3, который может использоваться Glue Job для обработки. Или мне следует каждый раз запускать краулер, чтобы получать самые свежие данные? Проблема в том, что в моем каталоге данных будет создано большее количество таблиц.

Пожалуйста, дайте мне знать, возможно ли это.

2 ответа

Решение

Альтернативный подход может быть, вместо чтения из каталога читать непосредственно из s3 и обрабатывать данные в Glue job.

Таким образом, вам больше не нужно запускать краулер.

Использовать

from_options(connection_type, connection_options={}, format=None, format_options={}, transformation_ctx="")

Документировано здесь

Вам нужно только снова запустить AWS Glue Crawler, если схема изменится. Пока схема остается неизменной, вы можете просто добавлять файлы в Amazon S3 без повторного запуска сканера.

Другие вопросы по тегам