Как рассчитать максимальный размер результата Spark Driver - PullRequest
0 голосов
/ 06 ноября 2018

Недавно я получил сообщение об ошибке «spark.driver.MaxResultSize». Я использую pyspark в режиме клиента пряжи. Код должен генерировать случайные поддельные данные для тестирования.

new_df = None
for i in range(int(2000)):
    df = spark.range(0,10000)
    temp = df.select(f.col("id").alias('user_id'), f.round(1000 * f.abs(f.randn(seed=27))).alias("duration"))
    if new_df is None:
        new_df = temp
    else:
        new_df = new_df.union(temp)

Я попытался увеличить максимальный размер результата до 15G, чтобы он работал. Я не уверен, почему это потребовало так много памяти. Есть ли руководство о том, как рассчитать размер набора результатов?

1 Ответ

0 голосов
/ 06 ноября 2018

Код выполняется на драйвере, а не на работниках. например для и дф заявление. Иначе говоря, чтение из Hive или JDBC через DFReader.

Состояние документов:

spark.driver.maxResultSize 1g default Предел общего размера сериализованного результаты всех разделов для каждого действия Spark (например, собирать) в байт. Должно быть не менее 1М или 0 для неограниченного. Работа будет прервана если общий размер превышает этот предел. Высокий предел может привести к ошибки нехватки памяти в драйвере (зависит от spark.driver.memory и накладные расходы памяти на объекты в JVM). Установка правильного предела может защитить драйвер от ошибок нехватки памяти.

Возможно, вы захотите взглянуть на них в качестве руководства: Как использовать spark для генерации огромного количества случайных целых чисел? и , как создать список кортежей rdd в spark spark , чтобы распределите обработку нагрузки, а также увеличьте spark.driver.maxResultSize, если вы хотите собирать данные для драйвера - чего я бы не стал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...