【发布时间】:2018-04-23 20:03:18
【问题描述】:
我有一个带有 [(String, Array[String])] 类型键值对的 RDD1(我将它们称为 (X, Y))和一个数组 Z[String]。
我正在尝试让 Z 中的每个元素计算在 Y 中有多少 X 实例有 Z。我希望我的输出为 ((X, Z(i)), #ofinstances)。
RDD1= ((A, (2, 3, 4), (B, (4, 4, 4)), (A, (4, 5)))
Z = (1, 4)
那我想得到:
(((A, 4), 2), ((B, 4), 1))
希望这是有道理的。 正如你所看到的,如果至少出现一次,我只想要一个元素。
到目前为止我已经尝试过了:
val newRDD = RDD1.map{case(x, y) => for(i <- 0 to (z.size-1)){if(y.contains(z(i))) {((x, z(i)), 1)}}}
我这里的输出是一个 RDD[Unit]
我不确定我所要求的是否可能,或者我是否必须以其他方式进行。
【问题讨论】:
标签: scala apache-spark rdd