Мы получаем данные с сервера Kafka, где каждая тема имеет 10 разделов.Мы обрабатываем его с помощью Spark Streaming, поэтому мы получаем 10 разделов Spark для каждой темы.Мы используем 6 параллельных тем в одном приложении, то есть 60 разделов Spark (тема A-1, тема A-2, тема A-3, тема A-4 ... тема F-9, тема F-10).
В конце обработки мы отправляем данные на S3 в разделе foreachPartition, но в этом случае мы получаем 60 небольших файлов.
Поскольку некоторые темы содержат только 5-7 новых записей для пакета, другие темы содержат 500 новых записей, мы хотели бы объединить их следующим образом:
- topicA-1 -> newpart1
- topicB-1 -> newpart1
- topicC-1 -> newpart1
- topicA-2 -> newpart2
- topicB-2 -> newpart2
- topicC-2 -> newpart2
- ...
- topicA-10 -> newpart10
- topicB-10 -> newpart10
- topicC-10 -> newpart10
В этом случае данные распределяются по разделам одинакового размера.
Возможно ли это как-нибудь?