1. 程式人生 > >pyspark學習(一)-- 入門程式word count

pyspark學習(一)-- 入門程式word count

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)