如何在另一个RDD转换中使用RDD过滤器

时间:2017-11-16 03:36:59

标签: apache-spark rdd

现在,我需要选择在RDD-A的每一行中添加一个元素。该元素来自RDD-B中的过滤操作。

RDD-A.map(line => line.fuctionA(RDD-B,line._1,line._2,line._3))

函数-A用于查找由RDD-B中的line._1和line._2过滤的行。发生以下错误:

org.apache.spark.SparkException: This RDD lacks a SparkContext.

通过浏览问题:Why does RDD.foreach fail with “SparkException: This RDD lacks a SparkContext”?,我知道它为什么会发生。

那么,可用的解决方案是什么?我认为虽然SPARK不允许这种操作。那么我怎样才能实现这一需求呢?在SPARK中使用广播?或者将数据保存在HDFS中?这个“过滤/查询过程”是否足够有效?

RDD如下:

  1. RDD-A结构

    +----------------------+------+------+------+    
    |  some other keys     | var1 | var2 | var3 |    
    +----------------------+------+------+------+    
    +----------------------+------+------+------+
    
  2. RDD-B结构

    +--------------------+------+------+------+------+    
    |  the-key-i-want    | var4 | var5 | var6 | var7 |    
    +--------------------+------+------+------+------+    
    +--------------------+------+------+------+------+
    
  3. 我想要做的是在RDD-A的每一行中添加一个项目。该项是RDD-B中唯一查询的行。查询要求是var1==var4 && var2==var5 && var3>=var6 && var3<=var7

0 个答案:

没有答案