#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).