collect and take 不适用于 RDD

Posted

技术标签:

【中文标题】collect and take 不适用于 RDD【英文标题】:collect and take is not working with RDD 【发布时间】:2018-06-16 18:03:11 【问题描述】:

我正在尝试运行此代码:

   rddCollected=rddCollect.mapValues(lambda x: (x,1))
   rddCollected.collect() 
   rddCollectJoin=rddCollected.reduceByKey(lambda  x,y:(x[0]+y[0],x[1]+y[1]))

--rddCollected 在收集时运行良好,但 rddCollectJoin 不工作并给出以下错误。

Py4JJavaError:调用 z:org.apache.spark.api.python.PythonRDD.runJob 时出错。 :org.apache.spark.SparkException:作业因阶段失败而中止:阶段 58.0 中的任务 0 失败 1 次,最近失败:阶段 58.0 中丢失任务 0.0(TID 78,本地主机,执行程序驱动程序):java.io.FileNotFoundException : C:\Users\lenovo\AppData\Local\Temp\blockmgr-431169ff-717a-4728-b9b2-c2ed1b4b5b20\0c\temp_shuffle_d089dc45-014d-4d07-b0c0-ee917ad1b501(系统找不到指定的路径)

Java 版本是 1.8 - 我有 java 10,但我将它缩小到 8,因为 10 存在问题 谁能帮忙?

【问题讨论】:

尝试重新运行,它会发生一段时间。 我关闭并重新运行它。它起作用了..可能是什么问题? 【参考方案1】:

我在使用 .collect() 时遇到了一些问题。我正在使用一个不可序列化的类。只需对该类实现 Serializable 并重试。它对我有用。

【讨论】:

以上是关于collect and take 不适用于 RDD的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark:使用 map 函数而不是 collect 来迭代 RDD

spark总结5 RDD

大数据(8e)RDD常用算子

Pyspark RDD 收集前 163 行

RDD take()方法如何在内部工作?

在pyspark如何广播和巨大的rdd?