【发布时间】:2021-02-24 04:28:24
【问题描述】:
我只是想学习 PySpark,但对以下两个 RDD 之间的区别感到困惑,我知道一个是类型集,一个是列表,但都是 RDD
rdd = sc.parallelize([('a', 1), ('b', 1), ('a', 3)])
type(rdd)
和
rdd = sc.parallelize(['a, 1', 'b, 1', 'a, 3'])
type(rdd)
处理map和reduce函数的代码:
priceMap= s.map(lambda o: (o.split(",")[0], float(o.split(",")[1])))
priceMap.reduceByKey(add).take(10)
我可以轻松地对第二个 rdd 数据执行 map/reduce 功能,但是当我尝试执行 map 或 reduce 时出现以下错误:那么我们如何将第一个 rdd 转换为第二个 rdd 数据,或者如果有有什么方法可以解决以下错误,请帮忙。谢谢
Py4JJavaError: 调用时出错 z:org.apache.spark.api.python.PythonRDD.runJob。 : org.apache.spark.SparkException:作业因阶段失败而中止: 阶段 162.0 中的任务 0 失败 1 次,最近一次失败:丢失任务 0.0 在阶段 162.0 (TID 3850, localhost, executor driver): org.apache.spark.api.python.PythonException: Traceback (最近 最后调用):
【问题讨论】:
-
回溯表明存在 python 异常。请显示您的 map/reduce 代码 - 错误可能源于那里
-
@mck 是的,我更新了 map 和 reduce 的两行代码,请你帮帮我。谢谢
-
s 和 add 是未定义的变量
-
把 rdd name 代替 s 所以会是 rdd.map(.... add 是函数,可以导入,下面是库,请导入..... . from operator import add
标签: python apache-spark pyspark rdd