Должен ли я каждый раз запускать краулер 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 для обработки. Или мне следует запускать краулер каждый раз, чтобы получать самые свежие данные? Проблема в том, что в моем каталоге данных будет создано большее количество таблиц.

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


person Hary S    schedule 23.06.2020    source источник


Ответы (2)


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

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

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

from_options (тип_подключения, параметры_подключения = {}, формат = Нет, формат_опции = {}, трансформация_ctx =)

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

person Shubham Jain    schedule 24.06.2020
comment
Привет, Шубхэм, у моего входящего файла будет отметка времени. Если мне нужно использовать его напрямую из S3, мне нужно каждый раз менять имя файла в задании Glue, что не будет идеальным для производственной среды. Пожалуйста, дайте мне знать, если это так. - person Hary S; 24.06.2020
comment
Вам нужно указать только путь к папке, а не имя файла, чтобы быть точным - person Shubham Jain; 24.06.2020
comment
Как нам справиться с этим с несколькими файлами? - person Bahroze Ali; 09.03.2021

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

Обновление: комментарий @ Eman ниже верен

Если вы читаете из каталога, это предложение не сработает. Если вы не выполните повторное сканирование, разделы не будут обновлены в таблице каталога. Запуск поискового робота сопоставляет эти новые разделы с таблицей и позволяет обрабатывать разделы на следующий день.

person Dennis Traub    schedule 23.06.2020
comment
Привет, Деннис! В первый день мой код задания на клей будет иметь следующий ввод: Первый запуск: datasource0 = glueContext.create_dynamic_frame.from_catalog (database = test, table_name = employee, transformation_ctx = datasource0) (данные первого дня) Второй день я буду получение новых данных в корзине S3, если я использую это в коде задания склеивания datasource0 = glueContext.create_dynamic_frame.from_catalog (database = test, table_name = employee, transformation_ctx = datasource0), не будут ли в нем данные за предыдущий день? Пожалуйста, позвольте мне сейчас! - person Hary S; 23.06.2020
comment
Если вы читаете из каталога, это предложение не сработает. Если вы не выполните повторное сканирование, разделы не будут обновлены в таблице каталога. Запуск поискового робота сопоставляет эти новые разделы с таблицей и позволяет обработать разделы на следующий день. - person Eman; 02.07.2020