【问题标题】:Can Spark RDD in Scala be var instead of val?Scala中的Spark RDD可以是var而不是val吗?
【发布时间】:2021-06-07 15:18:44
【问题描述】:

我对 Spark/Scala 还是很陌生。 Scala中的Spark RDD可以是var而不是val吗?我正在尝试编写一个 for 循环来在每次迭代中更新 RDD。如果我将它定义为 val 那么它将是不可变的,所以我只是想知道我是否使用 var RDD 来代替。

【问题讨论】:

  • 也许可以通过代码示例向我们展示您正在尝试做的事情

标签: scala apache-spark rdd


【解决方案1】:

var 不会影响分配对象的可变性。唯一的区别是您可以替换分配给var 的对象,但不能对val 执行相同操作。您可以将RDD 分配给var,但它仍然不会是可变的(尽管可以被覆盖)。不过,还有更优雅的方式来处理这样的事情。

【讨论】:

    【解决方案2】:

    Q - Scala 中的 Spark RDD 可以用 var 代替 val 吗?

    Ans - 是的,可以。 Spark 不会通过分配这两个关键字中的任何一个来引发错误,但始终建议使用 val(因为 val 字段是不可变的,而 spark RDD 也是不可变的)。

    我试过这个小代码sn-p的PFB截图

    val 和 var 之间的区别在于 val 使变量不可变——就像 Java 中的 final 一样——而 var 使变量像任何编程语言中的普通变量一样可变。 因为 val 字段不能改变,这就是我们在使用 spark rdd 时需要的,即不可变数据类型。

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 2011-07-01
      • 2017-10-25
      • 2011-06-26
      • 1970-01-01
      相关资源
      最近更新 更多