Данные внутри моего сегмента s3 выглядят следующим образом ... s3: //bucketName/prefix/userId/XYZ.gz
Существует около 20 миллионов пользователей, и в каждой подпапке пользователя будет 1 - 10 файлов.
Моя работа по склеиванию начинается следующим образом ...
datasource0 = glueContext.create_dynamic_frame_from_options ("s3", {'paths': ["s3: // bucketname / prefix / "], 'useS3ListImplementation': True, 'recurse': True, groupFiles ':' inPartition ',' groupSize ': 100 *1024* 1024}, format =" json ", translation_ctx =" datasource0 ")
Существует несколько оптимизаций, таких как groupFiles, groupSize & useS3ListImplementations, которые я попытался выполнить, как показано выше.
Я использую рабочие экземпляры G.2X, чтобы обеспечить максимальную память для заданий.
Это задание, однако, последовательно завершается неудачно в первой строке, с 'SDKClientException, Невозможно выполнить HTTP-запрос: Неподдерживаемая версия записи Unknown-0.0' и с 'Невозможно выполнить HTTP-запрос: Получено close_notify во время рукопожатия' err или при включении useS3ListImplementations.
Из мониторинга я наблюдаю, что для этой работы используется только один исполнитель, хотя я выделил 10 (или 20 в некоторых прогонах), и объем памяти драйвера увеличивается до 100%, а ЦП колеблется около 50%.
Я понимаю, что мои папки s3 организованы не лучшим образом. Учитывая эту структуру, есть ли способ заставить эту работу клея работать?
Моя цель - преобразовать данные json внутри этих исторических папок в паркет за один go. Любой лучший способ достижения этого также приветствуется.