У меня есть автономный кластер с искрой (3 узла), где программа драйвера работает на главном (1 узел), и есть 3 исполнителя (2 ведомых и 1 на главном узле).
У меня есть несколько основных вопросов: 1. Я хочу выяснить время выполнения каждой функции mapPartition, выполняемой рабочими узлами программно, а не через искровой интерфейс. Я попытался time.time (), но он не работает - даже регистрация по некоторым причинам не работает. Я посмотрел журналы для печати заявления и ничего не было найдено. Вот мой код:
def bar(x):
start_time = time.time()
res_list = # do something and store result as an iterator in res_list
print(time.time() - start_time)
return res_list
def foo():
li = list(range(0, 10000000))
test_rdd = sc.parallelize(li)
test_rdd = test_rdd.repartition(200)
res_rdd = test_rdd.mapPartitions(lambda x: bar(x))
res_df = spark.createDataFrame(res_rdd, cols)
'''
write spark dataframe to mongodb
'''
Есть ли какой-нибудь пакет / инструмент, который может помочь нам получить время? По сути, наш код намного сложнее - поскольку он считывает данные из базы данных в кадр данных, выполняет некоторые вычисления, записывает их обратно в базу данных, и нам необходимо получить разбивку по времени для каждого из этапов.
Любая помощь будет оценена. Спасибо!