Мультипроцессинг в писпарке - PullRequest
0 голосов
/ 23 октября 2019

Я использую метод Python Threadpool с 10 потоками, чтобы независимо выполнять запросы улья в spark. У меня есть около 1125 запросов, которые нужно выполнить. Но я вижу, что вывод генерируется только для 850 запросов.

Мое понимание ниже

1 - Поскольку мы использовали 10 потоков в пуле, наша работа будет выполнять 10 запросов параллельно сданный момент времени. Дождитесь завершения 10 запросов, а затем запустите другой пул из 10 потоков для следующего набора запросов.

Правильно?

Вопросы -

1 - Использую ли яправильный подход с использованием Threadpool для моего варианта использования. Вариант использования - запуск независимых запросов улья в pyspark.

2 - Когда моя работа завершена, в выходной таблице я вижу только 850/1125 строк. Почему?

3 - если в пуле из 10 запросов произошел сбой одного запроса. Что произойдет? Будет ли работа продолжена со следующим набором запросов? Или это остановит исполнение

from multiprocessing.pool import ThreadPool

threading_hive = ThreadPool(10)

try:
    output_map1 = threading_hive.map(executeHiveQuery,keys)
"""Example of keys - [[1,select * from table,xyz],[...],[...]]"""
except:
    print("Error during query execution")
    pass
finally:
    threading_hive.close()
    threading_hive.join()


def executeHiveQuery(x):
    """ Function that take spark object and query as input and return the 
output"""
"""x[1] - Is my hive query"""
    query_output = spark.sql(x[1]).toJSON().collect()
    return [str(x[0]),str(query_output),str(x[2])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...