Spark快速大數據分析-第一和第二章

我發現光是NumPy和Pandas其實不太夠,找工作都要你會點Linux,懂點Spark和Hadoop,相當尷尬。於是我選擇在我的電腦上

安裝了VMware,然後安裝了CentOS 7。

說到Linux,我在Ubuntu和CentOS 7猶豫了很久,最後決定還是 CentOS 7吧,主要是參考了大家的意見,服務器領域CentOS用的多,當然不一定是7。

《Spark快速大數據分析》這本書挺新的,著名的動物系列書,我覺得可能比較合適我。另外此書據說照顧了JAVA, PYTHON, SCALA三種語言,非常適合大衆。


========================================================================================

第一章 Spark數據分析導論

第一章主要就是介紹Spark:一個用來實現快速而通用的集羣計算的平臺。

然後介紹了諸多組件,Spark Core, Spark SQL, Spark Streaming(實時數據流式計算), MLlib(機器學習), GraphX (圖),然後說明其可以在各種集羣管理器上面運行。


Spark用途主要分爲 數據科學任務 和 數據處理應用。(然後吹了一波)


再來,介紹了Spark的歷史,誕生於2009年云云。


===================================================================


下載 Spark:

書上版本是1.2,而截至目前Spark已經是2.1.1了...相當尷尬,希望不要落伍。

如圖:



然後下載。

手把手說一下,以 CentOS 7自帶的火狐瀏覽器爲例,先去http://spark.apache.org/downloads.html 按上面的設置下載 Spark 的 tgz 壓縮包,

然後點擊下載歷史或者 Ctrl + Shift + Y ,再打開壓縮包所在文件夾,右鍵打開終端即可。

現在,在終端輸入:

tar -xf spark-2.1.1-bin-hadoop2.7.tgz
進行解壓。

現在可以看見,tgz文件解壓成功,文件夾裏面出現了同名但是沒有tgz後綴的文件。



現在進入這個新文件夾,可以看見很多東西,書上有介紹,這裏不說了。



===========================================================================

首先我們打開 Spark Shell。

進入 spark 文件夾,然後在終端輸入 bin/pyspark,這是說用python方式打開 Spark Shell。等待一會兒以後就正式進入了!


真刺激。


注意! 2.0+版本的 Spark 已經去掉了 ipython 功能!

=======================================

第一個例子!如下:


爽,看來是成功了。

這裏說明一下,RDD是彈性分佈式數據集(RDD,Resilient Distributed Datasets)的意思。

這裏變量 line 是一個RDD。我們可以在這個RDD上運行各種並行操作,比如統計這個數據集中的元素個數,或者輸出第一個元素。

===================================================================================================

驅動程序通過一個 SparkContext 對象來訪問Spark,shell 啓動的時候自動創建了這麼一個對象,是一個叫做sc 的變量。

剛剛創建的sc.textFile()就代表一個文件中各行文本的RDD,我們可以在此進行各種操作,比如count()


我們還可以擴展剛剛的例子,篩選出文件中包含某個特定單詞的行。



這裏的filter函數好像很重要,不過這裏暫時沒有介紹,大概猜測就是一個過濾器。以及後面的lambda line 是什麼東西?


不過翻頁,就介紹了 lambda 語法,這裏大概相當於

def hasPython(line):
      return "Python" in line

pythonLines = lines.filter(hasPython)


===========================================================

最後,最重要的,我們Python 編程經常需要寫成腳本運行,那麼我們可以把應用寫成腳本,然後使用Spark自帶的 bin/spark-submit 腳本運行:

bin/spark-submit my_script.py

實驗一下:就在Spark 文件夾下,建立一個新文件 test.txt

第一步,進入文件夾,打開終端。

第二步:鍵入命令:

vi test
第三步:可以看見進入文本編輯器了,這時候按 i 鍵對文本內容進行編輯。

第四步:按 ESC 退出編輯模式,輸入 :wq   (冒號 + w + q )保存。



第五步:在終端運行腳本,記得把文件名改成py後綴。

運行起來似乎沒什麼問題,出了很多信息。

# 創建 SparkContext 的最基本方法,只需要傳遞兩個參數
from pyspark import SparkConf, SparkContext

conf = SparkConf().setMaster("local").setAppName("My App") 
# 集羣URL:local可以讓Spark運行在單機單線程上而無需連接到集羣
# 應用名:在例子中我們使用的是 My App 。當連接到一個集羣時,這個值可以幫助你在集羣管理器的用戶界面中找到你的應用
sc = SparkContext(conf = conf)

初始化SparkContext 以後,我們可以使用前面的方法,比如文本行統計之類的來創建RDD並且進行操控。



# 創建 SparkContext 的最基本方法,只需要傳遞兩個參數
from pyspark import SparkConf, SparkContext

conf = SparkConf().setMaster("local").setAppName("My App") 
# 集羣URL:local可以讓Spark運行在單機單線程上而無需連接到集羣
# 應用名:在例子中我們使用的是 My App 。當連接到一個集羣時,這個值可以幫助你在集羣管理器的用戶界面中找到你的應用
sc = SparkContext(conf = conf)

#使用前面的例子
lines = sc.textFile("README.md")
num = lines.count()

print("=========================================================")
print("=========================================================")
print("=========================================================")
print("=========================================================")
print("=========================================================")
print(num)
print("=========================================================")
print("=========================================================")
print("=========================================================")
print("=========================================================")
print("=========================================================")


然後命令行中輸入 

bin/spark-submit    test.py

會彈出超多INFO,結果也會正常輸出。但是很難看。

所以這裏加的很多等號就是方便找結果...



http://spark.apache.org/docs/latest/programming-guide.html 這裏有參考

https://stackoverflow.com/questions/30763951/spark-context-sc-not-defined

去掉INFO參考:http://www.aboutyun.com/forum.php?mod=viewthread&tid=18519





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章