现在,我需要选择在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如下:
RDD-A结构
+----------------------+------+------+------+
| some other keys | var1 | var2 | var3 |
+----------------------+------+------+------+
+----------------------+------+------+------+
RDD-B结构
+--------------------+------+------+------+------+
| the-key-i-want | var4 | var5 | var6 | var7 |
+--------------------+------+------+------+------+
+--------------------+------+------+------+------+
我想要做的是在RDD-A的每一行中添加一个项目。该项是RDD-B中唯一查询的行。查询要求是var1==var4 && var2==var5 && var3>=var6 && var3<=var7
。