在 pyspark RDD 上执行 map/reduce 时出现一些错误
Getting some error while performing map/reduce on pyspark RDD
我只是想学习 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: An error occurred while calling
z:org.apache.spark.api.python.PythonRDD.runJob. :
org.apache.spark.SparkException: Job aborted due to stage failure:
Task 0 in stage 162.0 failed 1 times, most recent failure: Lost task
0.0 in stage 162.0 (TID 3850, localhost, executor driver): org.apache.spark.api.python.PythonException: Traceback (most recent
call last):
对于第一个rdd,可以替换map函数:
rdd = sc.parallelize([('a', 1), ('b', 1), ('a', 3)])
rdd.map(lambda o: (o[0], float(o[1]))).reduceByKey(add).collect()
那是因为 split
只适用于字符串而不适用于元组。
我只是想学习 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: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob. : org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 162.0 failed 1 times, most recent failure: Lost task 0.0 in stage 162.0 (TID 3850, localhost, executor driver): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
对于第一个rdd,可以替换map函数:
rdd = sc.parallelize([('a', 1), ('b', 1), ('a', 3)])
rdd.map(lambda o: (o[0], float(o[1]))).reduceByKey(add).collect()
那是因为 split
只适用于字符串而不适用于元组。