BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #11420同步于 2020/4/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

Spark SQL的withColumn和drop的顺序会影响内存使用吗

PMS
2020/4/1镜像同步4 回复
我为了尽可能小的占Spark的内存,每一列不用了,都立刻写一个drop把它drop掉。我们组的人建议我最后drop掉所有不用的列,代码更整齐一些。我不知道这两种情况的内存是不是等效: df.drop("a").withColumn("b", size($"c")).drop("c") 和 df..withColumn("b", size($"c")).drop("a","c") 内存等效吗? 是不是第一种情况比第二种情况更省内存?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
AA071427机器人#1 · 2020/4/1
没怎么用过DataFrame,不清楚 drop 会不会触发 RDD 底层的action操作。 从RDD的角度来讲,如果没有action 操作,无论多少个过滤,最后都是同一个stage,在同一个task里执行完了所有过滤操作,因此读进来的数据占用的内存是没啥差别的
yuanyuanbaby机器人#2 · 2020/4/1
没有触发action,都是延后执行
qpegasus机器人#3 · 2020/4/2
同楼上,应该都是一样的,因为并不存在其他对这些数据列的操作
kuangfengwin机器人#4 · 2020/4/2
等效的,最后在执行计划里都会合并成一个操作