火花变换表(ERROR:5063)

时间:2016-01-13 17:35:38

标签: scala apache-spark rdd

我有以下数据:

val RDDApp = sc.parallelize(List("A", "B", "C"))
val RDDUser = sc.parallelize(List(1, 2, 3))
val RDDInstalled =  sc.parallelize(List((1, "A"), (1, "B"), (2, "B"), (2,  "C"), (3, "A"))).groupByKey
val RDDCart = RDDUser.cartesian(RDDApp)

我想映射这些数据,以便我有一个元组的RDD(userId,如果为用户提供了字母,则为Boolean)。我以为我找到了一个解决方案:

val results = RDDCart.map (entry =>
   (entry._1, RDDInstalled.lookup(entry._1).contains(entry._2))
)

如果我致电results.first,我会获得org.apache.spark.SparkException: SPARK-5063。我在Mapping函数中看到了Action的问题,但是我不知道如何解决它以便得到相同的结果。

1 个答案:

答案 0 :(得分:1)

只需joinmapValues

RDDCart.join(RDDInstalled).mapValues{case (x, xs) => xs.toSeq.contains(x)}