Должен ли я каждый раз запускать краулер 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 без повторного запуска сканера.