Проблема параллелизма AWS glue spark row_number

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

Вопрос:

Я боролся за то, чтобы использовать номер строки при работе с клеем. Контекст:

  • Мы загружаем пару файлов с паркетом из корзины S3
  • Мы обрабатываем их, и нам нужно идентифицировать каждую строку, разделенную парой полей.

В коде у нас есть:

 window_spec = Window().partitionBy('id', 'secondId').orderBy('id', 'secondId') data_frame = data_frame.withColumn("index", row_number().over(window_spec))  

Когда мы запускаем его локально или с меньшим количеством примеров в среде AWS, он отлично работает. Но в той же среде AWS с большим объемом данных возникает проблема параллелизма. Появляется дублированный номер строки, что очень странно, так как номер строки должен учитывать распределенный характер заданий клея pyspark.

Есть какие-нибудь советы о том, что может быть причиной этого?

Комментарии:

1. Увидев ваш последний ответ на мой ответ, я решил удалить его. Все, что я могу сказать, это то, что многие люди без проблем используют оконные функции, и это действительно был случай, когда количество работников нарушило функциональность, которую давно бы исправили.

2. @Парсифаль, прошу прощения, если я прозвучал грубо, я не хотел. Дело в том, что я перепробовал много вещей, и ваши комментарии, безусловно, очень помогли мне, но я попытался сделать самую простую вещь, которую мог, а именно получить данные и запустить код в моем примере (добавив номер строки), но у нас все еще были проблемы с этим. Основная проблема заключалась в том, что мы собирали файлы из разных мест только в один кадр данных. Наше решение состояло в том, чтобы использовать функцию объединения(1).