【发布时间】:2018-03-12 17:04:53
【问题描述】:
我需要衡量我的 PySpark 代码的性能。为了消除不应影响运行时间的预处理步骤的影响,我缓存了我的中间数据帧。也就是说,
for i in iiis:
df_cache = ini_df.sample(False, 1/len(iiis))
df_cache.cache.count()
但是,每次尝试执行此操作时都会耗尽内存,因为原始数据框太大。知道如何在不使用 cache 函数的情况下测量代码的运行时间吗?
【问题讨论】:
-
有点不清楚你在这里测量哪段代码的性能。我想您的要求是避免延迟计算并破坏数据帧的沿袭,以便您可以衡量单个操作的性能。在这种情况下,我建议你坚持到磁盘。
-
是的。我试图在这里避免惰性计算。我的问题是我没有足够的内存来存储缓存的数据,但我的 spark 作业必须具有较低的 RAM 要求并且同时足够快。
-
在这种情况下,您必须避免缓存到内存,正如我建议的那样尝试将其持久化到磁盘,这会破坏血统。
标签: apache-spark optimization pyspark