AWS Glue - предотвращение пустого экспорта в S3

Как избежать записи в AWS Glue пустых объектов в S3?

У меня есть Glue Job, который записывает полученный динамический фрейм в S3:

dynamic_frame = # result of Glue job processing

glue_context.write_dynamic_frame.from_options(
    frame = dynamic_frame,
    connection_type = 's3',
    connection_options = {'path': 's3://some-bucket/some-path'},
    format = 'json')

Однако, когда я проверяю содержимое корзины в S3, я вижу не только данные, но и множество объектов размером 0 B. Как я могу предотвратить это?

Я пробовал использовать класс DropNullFields (см. Ниже), но это не помогло.

dynamic_frame = # result of Glue job processing

non_null_fields = DropNullFields.apply(dynamic_frame)

glue_context.write_dynamic_frame.from_options(
    frame = non_null_fields,
    connection_type = 's3',
    connection_options = {'path': 's3://some-bucket/some-path'},
    format = 'json')
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
854
1

Ответы 1

Aws Glue - это оболочка для Apache Spark. Обычно Spark записывает столько файлов, сколько разделы. Если он пишет пустые файлы, это означает, что у вас есть пустые разделы. Способ сделать это - переразбить ваш dynamic_frame на меньшие разделы. В Spark DataFrames вы должны использовать функцию «coalesce».

В Glue вы можете попробовать использовать функцию повторного разбиения: https://docs.aws.amazon.com/glue/latest/dg/glue-etl-scala-apis-glue-dynamicframe-class.html#glue-etl-scala-apis-glue-dynamicframe-class-defs- передел

Другие вопросы по теме