Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark使用过滤条件Scala在另一个RDD上迭代RDD_Scala_Apache Spark_Spark Streaming_Rdd_Mapr - Fatal编程技术网

Spark使用过滤条件Scala在另一个RDD上迭代RDD

Spark使用过滤条件Scala在另一个RDD上迭代RDD,scala,apache-spark,spark-streaming,rdd,mapr,Scala,Apache Spark,Spark Streaming,Rdd,Mapr,我想用一些附加的过滤条件迭代一个大RDD和一个小RDD。下面的代码工作正常,但进程仅使用驱动程序运行,而不是分布在节点上。那么,请建议其他方法 val cross = titlesRDD.cartesian(brRDD).cache() val matching = cross.filter{ case( x, br) => ((br._1 == "0") && (((br._2 ==((x._4))) && ((br._3 ex

我想用一些附加的过滤条件迭代一个大RDD和一个小RDD。下面的代码工作正常,但进程仅使用驱动程序运行,而不是分布在节点上。那么,请建议其他方法

val cross = titlesRDD.cartesian(brRDD).cache()
 val matching = cross.filter{ case( x, br) => 
    ((br._1 == "0") && 
   (((br._2 ==((x._4))) &&
    ((br._3 exists (x._5)) || ((br._3).head=="")) 
}
谢谢,
madhu

您可能不想缓存
交叉
。我相信,不缓存它会让笛卡尔积根据过滤器的需要“在运行中”发生,而不是实例化内存中笛卡尔积可能产生的大量组合

此外,在使用标题RDD进行笛卡尔积之前,您可以执行
brRDD.filter(u.\u 1==“0”)
,例如

val cross = titlesRDD.cartesian(brRRD.filter(_._1 == "0"))

然后适当修改用于创建匹配的过滤器。

小RDD有多大?你能把它改成广播变量吗?是的,我试过用广播变量。。相同的性能..:(考虑使用迭代和MapPartitions方法,如下面的URL[link]()对于初学者,您可以提供关于输入数据和/或示例输入类型的信息吗?这两个数据集有多大?另外,为什么您认为该进程只使用驱动程序运行?