pyspark學習(一)-- 入門程式word count
阿新 • • 發佈:2019-01-24
1. 學習spark的第一個程式 wordcount
先說下本人的開發環境和工具:
- win10
- spark 1.6
- python 2.7
- pycharm
什麼是word count?單詞計數
為什麼第一個程式是它,helloword呢?基本上是學習hadoop的mapreduce或spark入門的第一個程式,地位類似於學習寫程式碼時的hello world。
言歸正傳
程式碼結果from pyspark import SparkConf, SparkContext # 建立SparkConf和SparkContext conf = SparkConf().setMaster("local").setAppName("lichao-wordcount") sc = SparkContext(conf=conf) # 輸入的資料 data=["hello","world","hello","word","count","count","hello"] # 將Collection的data轉化為spark中的rdd並進行操作 rdd=sc.parallelize(data) resultRdd = rdd.map(lambda word: (word,1)).reduceByKey(lambda a,b:a+b) # rdd轉為collecton並列印 resultColl = resultRdd.collect() for line in resultColl: print line # 結束 sc.stop()
基本思路就是先將輸入的集合轉換成RDD;然後先對RDD進行map操作,將word變換成(word,1)的形式,其中的數字1代表單詞出現了1次;之後進行reduceByKey(func),就是將key值相同的資料進行func操作,此處就是將相同單詞的次數相加;最後將得到的結果列印在控制檯。
2. spark程式初始化
每個spark 應用(application)包含一個驅動(driver)程式,這個驅動程式執行使用者的主函式,並在叢集中執行並行化操作。Spark提供的主要抽象是一個彈性分散式資料集(resilientdistributed dataset,RDD),它是叢集節點中進行分割槽的元素集合,可以進行並行操作。RDDs是通過從Hadoop檔案系統(或其他檔案系統)中的檔案或程式中scala的集合初始化建立,也可以通過其他RDD轉換(transform)得到。使用者也可以令spark將RDD持久化(persist)在記憶體中,這可以使RDD在並行操作中的高效的重用。RDD可以從故障節點中自動恢復。
和上面例子的程式碼一樣,Spark 程式的第一件事是建立一個SparkContext物件,這個物件告訴spark如何連線到叢集。為了建立這個物件,首先需要建立一個包含application資訊的 SparkConf 物件。
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)