如何解决Spark似乎两次评估了缓存的DataFrame
我有一些看起来像这样的代码
val cached = parentDf.cache
val df1 = cached
.agg(
min($"a").as("min_a")
)
val df2 = cached
.groupBy(
$"b"
)
.agg(
min($"c").as("min_c_by_b")
)
val finalDf = cached
.crossJoin(broadcast("df1"))
.join(
broadcast(df2),$"b","inner"
)
.select(
???
)
在用户界面中,我看到对parentDF似乎进行了两次评估,这是有道理的,因为df1和df2可以并行评估,但是似乎也对缓存应用了两次,这似乎是不合理的。
有人可以确认我的解释正确吗? parentDF很大,所以我真的不想支付两次缓存的费用。
任何有关如何优化此操作顺序的替代方法也将受到赞赏。
欢呼
特里
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。