【问题标题】:How to calculate the max result size of Spark Driver如何计算 Spark Driver 的最大结果大小
【发布时间】:2018-11-07 00:08:24
【问题描述】:

最近我收到一个错误,超出了“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 以使其正常工作。我不知道为什么它需要这么多内存。有没有关于如何计算结果集大小的指南?

【问题讨论】:

  • 您认为答案有什么价值吗?

标签: apache-spark pyspark


【解决方案1】:

代码都在驱动程序上执行 - 我的印象不是工人。例如for 和 df 语句。与通过 DFReader 从 Hive 或 JDBC 读取不同。

文档状态:

spark.driver.maxResultSize 1g 默认序列化总大小限制 每个 Spark 操作(例如收集)的所有分区的结果 字节。应至少为 1M,或 0 表示无限制。作业将被中止 如果总大小超过此限制。上限可能会导致 驱动程序中的内存不足错误(取决于 spark.driver.memory 和 JVM中对象的内存开销)。设置适当的限制可以保护 内存不足错误的驱动程序。

您可能希望查看这些以获取指导:How to use spark to generate huge amount of random integers?how to make rdd tuple list in spark? 以便分配负载处理以及增加 spark.driver.maxResultSize 如果您希望收集到驱动程序 - 我不会。

【讨论】:

    猜你喜欢
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2015-06-03
    • 2020-04-11
    相关资源
    最近更新 更多