Spark table transformation (ERROR: 5063)
Spark table transformation (ERROR: 5063)
我有以下数据:
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,如果为用户提供了字母,则为布尔值)。我以为我找到了解决方案:
val results = RDDCart.map (entry =>
(entry._1, RDDInstalled.lookup(entry._1).contains(entry._2))
)
如果我调用 results.first
,我会得到 org.apache.spark.SparkException: SPARK-5063
。我看到映射函数中的操作有问题,但不知道如何解决它才能得到相同的结果。
只是 join
和 mapValues
:
RDDCart.join(RDDInstalled).mapValues{case (x, xs) => xs.toSeq.contains(x)}
我有以下数据:
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,如果为用户提供了字母,则为布尔值)。我以为我找到了解决方案:
val results = RDDCart.map (entry =>
(entry._1, RDDInstalled.lookup(entry._1).contains(entry._2))
)
如果我调用 results.first
,我会得到 org.apache.spark.SparkException: SPARK-5063
。我看到映射函数中的操作有问题,但不知道如何解决它才能得到相同的结果。
只是 join
和 mapValues
:
RDDCart.join(RDDInstalled).mapValues{case (x, xs) => xs.toSeq.contains(x)}