您好我有一个缓存的数据框(我可以在我的spark UI中看到)。如果我执行count()动作,则按预期花费很少的时间。此外,如果我可视化DAG,我发现它使用了缓存的数据帧:
此代码:
df_calls.count()
给予执行DAG:
(小绿圈表示它是一个缓存的数据帧。因此,这意味着不必执行前面的步骤,只需执行后续步骤)
现在也是如此:
df_calls.map(row=>row.getString(10).toDouble).stats()
给予执行DAG:
图中没有小绿圈,因此它不使用缓存的数据帧,但数据帧仍在内存中。似乎数据正在重新加载。
这里发生了什么以及为什么?