使用键和值创建RDD

时间:2019-10-17 23:34:37

标签: scala apache-spark rdd

我有一个包含String元组的列表

list = [("A", "B"), ("B", "C"), ("B", "D")]

我有一个包含的哈希图

hash_map = ("A"-> List("B"), "B" -> List("C", "D"))

我想通过以下方式遍历list并创建一个RDD,

RDD = [("A", "C"), ("A", "D")]

我尝试这样做,

val result = list.map(d => (d._1, hash_map.get(d._2).map(v => v)))

但是,它返回

OUTPUT:
("A", List("C", "D"))

我应该怎么做?

1 个答案:

答案 0 :(得分:1)

不确定这与RDD有什么关系,但这会为您带来所需的结果。

val list = List(("A", "B"), ("B", "C"), ("B", "D"))

val hashMap = Map("A"-> List("B"), "B" -> List("C", "D"))

val r = list.flatMap { case (a, b) =>
  hashMap.getOrElse(b, Nil).map((a, _))
}

println(r)