Создание обновленного набора данных с помощью журнала изменений в AWS Glue/Athena

#amazon-web-services #apache-spark #aws-glue #amazon-athena

Вопрос:

В моей текущей настройке у меня есть данные в S3, которые просматриваются с помощью AWS Glue, и я использую AWS Athena для их запроса. В S3 у меня есть два разных набора данных на основе JSON. Один из них содержит консолидированное представление о типе организации, например о клиентах.

 [{  "customerId": "custXXX",  "name": "Customer XYZ",  "email": "customer_xyz@customers.com" }, {  "customerId": "custYYY",  "name": "Customer ABC",  "email": "customer-abc@customers.com" }]  

Другой, содержащий изменения в сущности того же типа. Изменения могут заключаться в обновлении поля или полном удалении записи.

 [{  "operation": "update",  "object": {  "customerId": "custXXX",  "name": "Customer XYZ",  "email": "customer-yzw2@customers.com"  } }, {  "operation": "delete",  "object": {  "customerId": "custYYY"  } }]  

Мне нужно взять первый набор данных и применить все изменения из второго набора данных, чтобы создать третий «новый» консолидированный набор данных. Это похоже на довольно стандартный шаблон, использующий CDC для репликации одного источника данных в другой, но я не смог найти никаких подробностей о том, как я мог бы сделать это с помощью AWS Glue/Athena или даже обычной Spark.

Новый набор данных:

 [{  "customerId": "custXXX",  "name": "Customer XYZ",  "email": "customer-yzw2@customers.com" }]