Я хочу проверить схему до обработки ETL с помощью AWS Glue. Я пытаюсь сделать все в Glue, чтобы избежать использования Airflow или других инструментов.
Поток - необработанные данные S3 -> сканирование данных S3 в Glue -> выполнение проверки схемы -> базовый ETL с использованием AWS Glue (базовый выбор * на данный момент) -> вывод в S3 -> выполнение специальных запросовв качестве проверки перед дальнейшей обработкой с использованием установленного EC2 программного обеспечения ETL. Идея состоит в том, что если один шаг не удался, я хочу отправить уведомление (по электронной почте или иным образом) о том, что не удалось и где.
Пример файла данных: первая таблица (OrderDate, region, ...) из эта ссылка
Вариант 1. Скрипт AWL Glue ETL выполняет сопоставление полей внутри скрипта. Если существует недопустимый тип поля (например, int находится в столбце даты), произойдет ли сбой и остановка сценария? Я не видел способа в скрипте проверять схему только перед обработкой.
Пример строки скрипта в PySpark:
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("orderdate", "string", "orderdate", "date"), ("region", "string", "region", "string"), ("rep", "string", "rep", "string"), ("item", "string", "item", "string"), ("units", "long", "units", "int"), ("unitcost", "double", "unitcost", "double"), ("total", "double", "total", "double")], transformation_ctx = "applymapping1")
Вариант 2: я читал о классификаторах клея. Я создал тестовый классификатор CSV. Я не уверен, как применить это к моим фактическим просканированным данным, хотя нет никаких вариантов связать это вместе. Если классификатор завершится неудачно, будет ли скрипт ETL все еще выполняться?
Пример классификатора: Пример классификатора
Рабочие процессы требуют триггеров, триггеры требуют сценариев ETL, поэтому я не уверен, какдобавить классификатор. Я предполагаю, что классификатор налагается, когда происходит сканирование, но неясно, как.