发信人: PMS (PMS)

楼主需要用Scala对一个Spark Dataframe分几次添加几个列。我觉得把这个Dataframe设成var,然后每次对这个var添加列,比每次设每添加一个列设一个val dataframe要好。
但我看我们组其它代码没有把Dataframe设成Scala var的,都是设成val。虽然设成var程序能跑通,但想问下大家把Dataframe设成var有什么坏处吗


发信人: glucky (嗯哼)
val类似Java的final,防止引用变量被重用或者说被修改


发信人: Poet (等我写完这首诗)
Scala的一个重要思想就是,尽量不复用变量,除非十分必要且你非常清楚你在做什么。
因此,Scala中是能用val尽量用val。


发信人: qpegasus (Marcteen)
var和val不是修饰的引用变量吗,而且rdd只能新建不能修改,dataframe可以只修改不新建吗


所以spark dataframe慢啊。函数式编程要尽量摒弃用变量,不然还要去维护变量状态,和写java区别不大了

如果你加了几列又要把这几列删掉怎么办,难道一直对同一个df操作吗?有中间变量不就可以直接用吗

对df不太了解,但是val修饰df也可以直接加列吧,var只是代表你这个df引用可以指向新的df对象,而val不可以罢了