我正在應用map,然後使用pyspark在RDD上進行reduceByKey轉換。我嘗試以下兩個語法,兩者似乎工作:pyspark:使用(,)和[,]爲reducedByKey的pair表示之間的區別
的情況下1:
my_rdd_out = my_rdd.map(lambda r: [r['my_id'], [[r['my_value']]]])\
.reduceByKey(lambda a, b: a+b)\
.map(lambda r: r[1])
的情況下2:
my_rdd_out = my_rdd.map(lambda r: (r['my_id'], [[r['my_value']]]))\
.reduceByKey(lambda a, b: a+b)\
.map(lambda r: r[1])
這裏的r是類from pyspark.sql import Row
的。 在情況1中,地圖輸出對位於括號內;在情況2中,地圖輸出對在括號中。雖然兩者都有效,但我想知道使用[]和()來表示一對,這將成爲reduceByKey的輸入嗎?謝謝!
那麼在執行reduceByKey之前,reduceByKey實際上是否將列表轉換爲元組?哪種格式更正式/標準?謝謝! – Edamame
看到我的編輯(需要編輯,謝謝你)。沒有演員。並根據方便選擇你的格式。對於僅爲調用函數而創建的元組/列表,很難選擇,我同意。 –
嗨讓弗朗索瓦,謝謝你的詳細信息。我想了解def reduceByKey(func,iterable)的實現。我的例子中應該是func和iterable:reduceByKey(lambda a,b:a + b)?非常感謝! – Edamame