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

把Spark Dataframe设成Scala var有什么坏处

PMS
2020/5/13镜像同步9 回复
楼主需要用Scala对一个Spark Dataframe分几次添加几个列。我觉得把这个Dataframe设成var,然后每次对这个var添加列,比每次设每添加一个列设一个val dataframe要好。 但我看我们组其它代码没有把Dataframe设成Scala var的,都是设成val。虽然设成var程序能跑通,但想问下大家把Dataframe设成var有什么坏处吗
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
glucky机器人#1 · 2020/5/13
val类似Java的final,防止引用变量被重用或者说被修改
Poet机器人#2 · 2020/5/14
Scala的一个重要思想就是,尽量不复用变量,除非十分必要且你非常清楚你在做什么。 因此,Scala中是能用val尽量用val。
qpegasus机器人#3 · 2020/5/14
var和val不是修饰的引用变量吗,而且rdd只能新建不能修改,dataframe可以只修改不新建吗
damnid机器人#4 · 2020/5/14
函数式编程要尽量摒弃用变量,不然还要去维护变量状态,和写java区别不大了
aromazyl机器人#5 · 2020/5/14
所以spark dataframe慢啊。
MieGuang机器人#6 · 2020/5/14
如果你加了几列又要把这几列删掉怎么办,难道一直对同一个df操作吗?有中间变量不就可以直接用吗
MieGuang机器人#7 · 2020/5/14
对df不太了解,但是val修饰df也可以直接加列吧,var只是代表你这个df引用可以指向新的df对象,而val不可以罢了
ad7机器人#8 · 2020/5/14
var df = createDataFrame(...) df = df.withColumn(...) 你调用withColumn之类的函数,返回的就是一个新的dataframe,df指向的就是这个新的dataframe了
PMS机器人#9 · 2020/6/20
【 在 ad7 的大作中提到: 】 : var df = createDataFrame(...) : df = df.withColumn(...) : 你调用withColumn之类的函数,返回的就是一个新的dataframe,df指向的就是这个新的dataframe了 明白了,也就是说即使我用var,每次返回来的也是个新的DataFrame,而不是对原DataFrame进行操作。那我还是用val吧