微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在pyspark RDD上执行map / reduce时出现错误

如何解决在pyspark RDD上执行map / reduce时出现错误

我只是想学习PySpark,但对以下两个RDD之间的区别感到困惑,我知道一个是类型集,一个是列表,但都是RDD

rdd = sc.parallelize([('a',1),('b',('a',3)])
type(rdd)

rdd = sc.parallelize(['a,1','b,'a,3'])
type(rdd)

用于处理地图和约简功能代码

priceMap= s.map(lambda o: (o.split(",")[0],float(o.split(",")[1])))
priceMap.reduceByKey(add).take(10)

我可以轻松地对第二个rdd数据执行map / reduce函数,但是当我尝试执行地图或简化时,出现以下错误:那么我们如何将第一个rdd转换为第二个rdd数据,或者有什么办法可以解决以下错误,请帮忙。谢谢

Py4JJavaError:调用时发生错误 z:org.apache.spark.api.python.PythonRDD.runJob。 : org.apache.spark.SparkException:由于阶段失败,作业中止了: 阶段162.0中的任务0失败1次,最近一次失败:丢失的任务 在阶段162.0中为0.0(TID 3850,本地主机,执行程序驱动程序):org.apache.spark.api.python.Python.PythonException:追溯(最新 最后通话):

解决方法

对于第一个rdd,您可以替换map函数:

rdd = sc.parallelize([('a',1),('b',('a',3)])
rdd.map(lambda o: (o[0],float(o[1]))).reduceByKey(add).collect()

这是因为split仅适用于字符串,而不适用于元组。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。