【发布时间】:2023-03-16 08:28:01
【问题描述】:
我正在使用用 python 编写的 UDF 来更改数字的基数。
所以我读取了 parquet 文件并写入 parquet 文件并应用 UDF。 这是我运行的行:
input_df.withColumn("origin_base", convert_2_dest_base(input_df.origin_base)).write.mode('overwrite').parquet(destination_path)
这种转换使 spark 使用大量内存,我收到这种警告:
17/06/18 08:05:39 WARN TaskSetManager:在 4.0 阶段丢失任务 40.0(TID 183,ip-10-100-5-196.ec2.internal,执行程序 19):ExecutorLostFailure(执行程序 19 退出导致由正在运行的任务之一)原因:容器因超出内存限制而被 YARN 杀死。使用了 4.4 GB 的 4.4 GB 物理内存。考虑提升 spark.yarn.executor.memoryOverhead。
最后还是失败了。
UDF 不是正确的方法吗?为什么会消耗这么多内存?
【问题讨论】:
-
如果不分享一个完全可重复的例子,很难说出什么是正确的方法。
标签: apache-spark pyspark