У меня есть корзина S3, в которой хранятся данные в формате DynamoDb json. Мне нужно сканировать эти данные с помощью AWS Glue, преобразовывать имена столбцов и записывать обратно в S3. Затем используйте Data-Pipeline для импорта этих данных в целевую таблицу DynamoDb.
Я запустил поисковый робот AWS Glue для извлечения схемы данных. схема состоит из трех столбцов:
col1 = {"s": string}, col2 = {"s": string}, key = {"s": string},
Данные в табличной форме выглядят следующим образом:
col1 col2 key
ab d 123
null r 908
a null 876
Итак, я использую фрейм данных pyspark и преобразую имена их столбцов (скажем, col1 в первый, col2 во второй и ключ в id), используя сценарий ETL в AWS Клей. После этого мне нужно записать фрейм данных в корзину S3. Но поскольку не все строки определяют col1 или col2, в ведре S3 будут записаны пустые поля. для. например, запись в сегменте S3 может выглядеть так:
{"first": null, "second": {"s": "r"}, "id": {"s": " 876 "}}
Теперь мне нужно перенести эти данные в другую таблицу DynamoDB с помощью конвейера данных. Но конвейер данных не может обрабатывать столбцы с нулевым значением, такие как «first»: null, и, следовательно, процесс завершается ошибкой. Также не разрешается назначать нулевые столбцы случайной строке, такой как «0» или пустой строке. Поля, имеющие нулевые значения, не должны записываться в таблицу, но должны быть соответствующие определенные поля.
В основном, для работы конвейера данных, указанная выше запись в корзине S3 должна выглядеть как
{"second": {"s": "r"}, "id": {"s": "876"}}
Как достичь этого logi c в сценарии ETL?