режим, каждый рабочий поток должен работать независимо от других, не так ли?
аписанииdataframe
вparquet
с помощьюpartitionBy
:
df.write.partitionBy("col1","col2","col3").parquet(path)
Я ожидал бы, что каждый записываемый раздел выполнялся независимо отдельной задачей и параллельно количеству работников, назначенных на текущую искровую работу.
Однако на самом деле при записи в паркет одновременно выполняется только один рабочий / задание. Один работник перебирает все разделы и выписывает.parquet
файлы серийно. Почему это так, и есть ли способ заставить параллелизм в этомspark.write.parquet
операция?
Следующеене что я хочу увидеть (должно быть700%+
..)
Из этого другого поста я также попытался добавитьrepartition
спереди
Spark паркетная перегородка: большое количество файлов
df.repartition("col1","col2","col3").write.partitionBy("col1","col2","col3").parquet(path)
К сожалению, это не имело никакого эффекта: все еще один рабочий ..
Примечание: я бегу вlocal
режим сlocal[8]
и виделДругие Операции Spark работают с восемью одновременно работающими рабочими и используют до 750% процессорных ресурсов.