首页 > 解决方案 > 在对rdd上的spark scala中进行哈希连接

问题描述

我正在尝试在 spark scala 中执行分区+广播连接。我有一本要广播到所有节点的字典。字典的结构如下:

{ key: Option[List[Strings]] } // I created this dictionary using a groupByKey first and then called collectAsMap before broadcasting.

上面的字典是使用结构类似于下面提到的表的表创建的。

我有一个表是一对RDD,其结构如下: Col A | Col B

我正在尝试按如下方式执行连接:

    val join_output = table.flatMap{
      case(key, value) => custom_dictionary.value.get(key).map(
        otherValue => otherValue.foreach((value, _))
      )
    }

我的目标是获得一对 RDD 作为输出,其内容是(来自表,来自存储在字典中的列表)。

代码运行并编译成功,但是当我检查输出时,我只看到:“()”作为正在保存的输出。我哪里错了?我确实看过其他一些在某种程度上反映了这个问题的帖子,但没有一个选项有效。我请求就这个问题提供一些指导。另外,如果有帖子准确指出这一点,请告诉我。

标签: scalaapache-sparkjoinrdd

解决方案


推荐阅读