最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Apache Spark 入門(2)

XAMPP下载 admin 637浏览 0评论
 這一篇我們要來講解 Spark 的運算機制,我本人是寫 Python的,所以下面都會使用 Python 來講解。

Transformation and Action
Spark 在執行的機制分為 Transformation 和 Action,Spark 執行的時候是使用一個叫 RDD(Resilient Distributed Dataset)的資料型態在做操作的,並且在做 transformation 是 lazy 的,所謂的 lazy 也就是當你呼叫有關 transformation 的 API 的時候,並不會馬上執行,僅僅紀錄 transformation 的轉換過程,而是要等到你呼叫 action 的 API 的時候,Spark 才會開始動作。

wordcount
上面講完 Spark 的運作機制後,接著讓我們來小試一下身手,寫一個 wordcount,帶大家了解一下基本的寫法跟 transformation 和 action

首先先假定大家都有 Spark 環境,所以我就直接 import Spark。

from pyspark import SparkContext

def main():
with SparkContext(appName=’wordcount’) with sc:

# transformation
data = sc.textFile(‘/inpit/a.txt’).map(lambda x: x[0])\
.flatMap(lambda x: x.split(‘ ‘))\
.map(lambda x: (x, 1)).reduceByKey(lambda a, b: (a+b))

# action
result = data.collect()

for (word, count) in result:
print(“word:”, word, “count:”, count)

if __name__ == ‘__main__’:
main()
上面是一個 wordcount 的小範例,從讀取檔案以及 map 的過程,還有最後的 reduceByKey,都是屬於 transformation,程式執行到這裡,Spark 只會記錄我們每一個對 RDD 的操作,並還沒有開始做運算,直到我寫了 collect(),Spark 就會開始往回找說這一個 RDD 是由前面哪一個操作產生出來的,一直持續往前找,直到找到最初的源頭,然後一口氣算完,這感覺有一點像遞迴。

以上是 Spark 的程式基本概念,詳細的 transformation 和 action 還有很多 API 可以用,可以多多上官網查詢,如果小弟的文章內容或觀念有誤,或是各位有更好的意見,歡迎在下面留言交流。

转载请注明:XAMPP中文组官网 » Apache Spark 入門(2)

您必须 登录 才能发表评论!