簡體   English   中英

reduceByKey和lambda

[英]reduceByKey and lambda

作為學習過程的一部分,我正在研究現有的Spark代碼,並且遇到了以下代碼:

enPages.map(lambda x: x.split(" "))\
        .map(lambda x: (x[2], int(x[3])))\
        .reduceByKey(lambda x, y: x + y, 40)\
        .collect()

我對reduceByKey和lambda的工作原理有基本的了解,但是在上面的代碼中,我沒有在上面的reduceByKey / lambda函數中獲得實用程序'40'。 任何澄清將不勝感激。

謝謝,Sasi。

PS:我嘗試通過刪除“ 40”來運行代碼並比較了輸出,結果發現只是鍵/值對的順序發生了變化,但是對於給定的鍵,值的計數是最終的輸出是相同的。

這是關於您可以在reduceByKey上進行的分區。 根據此處的 Apache Spark文檔。

功能:

.reduceByKey(lambda x, y: x + y, 40)

在這種和平的代碼中發生了什么,您正在運行lambda代碼,因為您已經知道要對累加器x和y求和。 40是將創建的用於處理此執行的分區數。

如果您想創建新數量的分區而不需要進行額外的改組,這將非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM