Apache spark 如何计算火花驱动器的最大结果大小
最近我收到一个错误,超过了“spark.driver.MaxResultSize”。我正在使用pyspark on Thread客户端模式。该代码用于生成用于测试的随机伪数据Apache spark 如何计算火花驱动器的最大结果大小,apache-spark,pyspark,Apache Spark,Pyspark,最近我收到一个错误,超过了“spark.driver.MaxResultSize”。我正在使用pyspark on Thread客户端模式。该代码用于生成用于测试的随机伪数据 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))).
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以使其正常工作。我不知道为什么它需要这么多内存。有没有关于如何计算结果集大小的指南 我的印象是,代码都是在司机身上执行的,而不是工人。e、 g.for和df语句。与通过DFReader从Hive或JDBC读取不同 文件规定: spark.driver.maxResultSize 1g序列化文件总大小的默认限制 中每个火花动作(例如收集)的所有分区结果 字节。应至少为1M,或0表示无限制。工作将被中止 如果总大小超过此限制。限制过高可能会导致 驱动程序内存不足错误(取决于spark.driver.memory和 JVM中对象的内存开销)。设置适当的限制可以保护 驱动程序内存不足错误
您可能希望查看这些以获得指导:这样可以分配负载处理,并增加spark.driver.maxResultSize(如果您希望收集到驱动程序),我不会这样做。您认为答案中有任何值吗?