【发布时间】:2017-06-19 03:17:49
【问题描述】:
我是 scala 的新手。我正在迭代 RDD 并将每个值存储在数组或任何其他集合中。但是值没有存储在数组中。
val ItrRdd = sqlContext.sql("select district,state FROM world ").rdd
var ItrRdd_data = ItrRdd.map { x =>
(x.getString(0), x.getString(1))
}
var district = Array[String]()
ItrRdd_data.map{ x =>
district.+:(x._1)
}
如果我打印 district 那么它将是空白的。 有人可以帮我做这个或其他类似的。
提前致谢。
【问题讨论】:
-
1.
+:不会改变district,它会创建一个新数组; 2.阅读spark.apache.org/docs/latest/…。 -
不管它是什么......但我希望该数组应该填充值。
-
解决问题 1 后,它仍然无法工作,因为这是 Spark - OP 不能使用变量
district并期望它将分布在整个作品中。 OP:您需要为district(然后是collect())生成一个RDD,或者(通常不是一个很好的解决方案)使用一个累加器。 -
@DarshanManek,然后按照第 2 点进行操作。您需要了解 Spark 如何实现这一目标
-
谢谢,但你能告诉我如何使用 Accumulator 来做到这一点。
标签: arrays scala hadoop apache-spark rdd