У меня есть кластер со следующими характеристиками:
4 узла 8 ядер на узел 8GB на узел
Когда я запускаю свою программу, я делаю это со следующимихарактеристики:
- кластер в режиме развертывания - ядра-исполнителя 5 - число исполнителей 4 - память-исполнителя 6G - память-драйвера 5G
30 потоков (для функции repartition
)
Проблема состоит в том, что он задерживает много для 500000 кортежей, и когда я увеличиваю количество потоков, например, 30, он выполняет распределение правильно, но каждый потоккаждого узла обрабатывает только ту часть, которая была подписана, а не все кортежи, которые он должен (500000/30 = 16666, для каждого потока 15 * 16666 = 250000, 500000 - 250000 = 250000 кортежей, которые не обрабатываются).
Когда я пробую это на моем компьютере (local[15]
, хотя у меня только 4 потока), алгоритм делит данные между 15 указанными потоками и присваивает им соответствующее количество кортежей
Я ожидаю, чтов клУ меня будет такое поведение, как на моем компьютере, но оно только реализует распределение данных между указанным мною потоком, а обрабатывает только 15 физических потоков, которые есть в кластере.Как я могу решить эту проблему или в кластере невозможно разделить больше, чем есть?