Я пытаюсь написать задание Glue (PySpark), выполняет некоторые ETL и в конечном итоге записывает эти данные в таблицу в SQL Server (определенную в каталоге AWS Glue). При записи записей в таблицу SQL Server могут существовать ограничения (например, первичные ключи, внешние ключи, типы столбцов), которые препятствуют записи определенных записей (то есть «плохих» записей) в таблицу. Когда это происходит, задание Glue выдает ошибку, и задание не выполняется. Есть ли способ предотвратить провал всей работы? Вместо этого можно ли было бы писать только «хорошие» записи и возвращать «плохие» записи, которые нарушили SQL Server, обратно в задание Glue (чтобы их можно было загрузить на S3)?
Я использую функцию write_dynamic_frame_from_catalog для записи данных в таблицу SQL Server. Вот пример кода для контекста:
# perform etl
output_df=spark.sql("SELECT ...")
# create dataframe and write to SQL Server
output_dynamic_frame = DynamicFrame.fromDF(output_df, glueContext, 'output_dynamic_frame')
glueContext.write_dynamic_frame_from_catalog(frame = output_dynamic_frame, database="<DATABASE_NAME>", table_name="<TABLE_NAME>")
После записи данных в SQL Server я хочу, чтобы записи, нарушающие ограничения таблиц SQL Server, были возвращены, чтобы их можно было загрузить на S3.