Параллельное выполнение задач - pyspark - PullRequest
0 голосов
/ 27 мая 2020

У меня есть фрейм данных pyspark, и я использую тот же фрейм данных для создания новых фреймов данных и объединения их в конце.

Например:

source_dataframe = spark.createDataFrame(rdd, schema).cache()

df1 = function1(source_dataframe)
df2 = function2(source_dataframe)
df3 = function3(source_dataframe)
df4 = function4(source_dataframe)

Каждая функция не зависит друг от друга и наконец, присоединяясь к ним, чтобы создать мой окончательный фрейм данных.

final_df = df1.join(df2, [id]).join(df3, [id]).join(df4, [id])

Есть ли способ в pyspark, чтобы я мог запускать все вышеуказанные функции параллельно, поскольку они независимы друг от друга? или Spark автоматически запускает их параллельно, поскольку они независимы друг от друга?

Любая помощь будет принята с благодарностью. Спасибо.

1 Ответ

1 голос
/ 27 мая 2020

Таким образом, Spark оценивается лениво и ничего не оценивает, если вы не примените действие в своей функции. Всякий раз, когда вы применяете преобразование, оно добавляется только в DAG, и все оценивается, когда вы запускаете действие в окончательном df.

Таким образом, нет необходимости выполнять эти преобразования одновременно. Spark делает это за вас, поскольку он распределен.

Еще один момент заключается в том, что Spark распределяется, и рабочая нагрузка делится на несколько исполнителей, и если вы попытаетесь использовать многопроцессорность python, это увеличит нагрузку на узле драйвера, что может привести к проблемам с OOM или медленному выполнению.

...