оператор print не работает в автономном кластере Spark из 3 узлов - PullRequest
0 голосов
/ 03 октября 2019

У меня есть автономный кластер с искрой (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
    '''
Есть ли какой-нибудь пакет / инструмент, который может помочь нам получить время? По сути, наш код намного сложнее - поскольку он считывает данные из базы данных в кадр данных, выполняет некоторые вычисления, записывает их обратно в базу данных, и нам необходимо получить разбивку по времени для каждого из этапов.

Любая помощь будет оценена. Спасибо!

1 Ответ

0 голосов
/ 03 октября 2019

Вы можете использовать Spark History Server или spark.time () .

...