[英]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 function,但是當我嘗試執行 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.PythonException: Traceback (最近調用最后):
對於第一個rdd,可以將map替換為function:
rdd = sc.parallelize([('a', 1), ('b', 1), ('a', 3)])
rdd.map(lambda o: (o[0], float(o[1]))).reduceByKey(add).collect()
那是因為split
只適用於字符串而不適用於元組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.