Параллельный запуск нескольких вызовов функций внутри pyspark - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть функция, которую я выполняю в pyspark-shell

import pandas as pd
def compute(x):
    data = pd.read_csv("/tmp/data_{}.csv".format(x))
    # Some Spark processing
    # Writes back final output in tmp

Я хочу запустить это параллельно со списком x.Я попробовал это -

x_list=[14,63]
from multiprocessing import Process
for x in x_list:
    p = Process(target = compute, args = (x,))
    p.start()

Это завершает сценарий.Я хочу, чтобы они полностью запустились до завершения скрипта.

Как мне этого добиться?

1 Ответ

0 голосов
/ 08 сентября 2018

Вы должны держать дескриптор на каждом из запущенных вами процессов и join() на них:

from multiprocessing import Process
import pandas as pd

def compute(x):
    data = pd.read_csv("/tmp/data_{}.csv".format(x))
    # Some Spark processing
    # Writes back final output in tmp

x_list = [14,63]
processes = []
for x in x_list:
    p = Process(target=compute, args=(x,))
    processes.append(p)
    p.start()
for p in processes:
    p.join()
...