Преобразование схемы данных в s3 с последующим импортом в Dynamodb с использованием конвейера данных - PullRequest
0 голосов
/ 29 мая 2020

У меня есть корзина 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?

...