Apache Spark簡單介紹、安裝及使用

Apache Spark簡介

Apache Spark是一個高速的通用型計算引擎,用來實現分佈式的大規模數據的處理任務。
分佈式的處理方式可使之前單臺計算機面對大規模數據時處理不了的狀況成爲可能。

Apache Spark安裝及配置(OS X下的Ubuntu虛擬機)

學習新東西最好是在虛擬機下操做,以避免對如今的開發環境形成影響,個人系統是OS X,安裝的是VirtualBox虛擬機,而後在虛擬機裏安裝的Ubuntu系統。
VirtualBox安裝方法請查看教程:
注意在安裝過程當中設置4GB的RAM和20GB的空間,不然會出現不夠用的狀況。

安裝 Anaconda

Anaconda 是Python科學計算包的合集,在接下來的例子中,會用到其中的matplotlib用來生成一張柱狀圖。
而後在Terminal中輸入命令:
bash Anaconda2-4.1.1-Linux-x86_64.sh

 

安裝 Java SDK

Spark運行在JVM上,因此還須要安裝Java SDK:
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

設置JAVA_HOME

打開.bashrc文件
gedit .bashrc
在.bashrc中添加以下設置:
JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JAVA_HOME
PATH=$PATH:$JAVA_HOME
export PATH

 

安裝Spark

去官網下載壓縮包,下載地址 http://spark.apache.org/downloads.html
將安裝包解壓,命令以下:
$ tar -zxvf spark-2.0.0-bin-hadoop2.7.tgz
$ rm spark-2.0.0-bin-hadoop2.7.tgz

 

啓用IPython Notebook
 
打開.bashrc文件
gedit .bashrc
在.bashrc中添加以下設置:
export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS=notebook

 

檢查是否安裝成功 (需重啓Terminal)
cd ~/spark-2.0.0-bin-hadoop2.7
./bin/pyspark

Apache Spark簡單使用 
 
打開Spark服務後,點擊new - Notebooks - Python新建一個Notebook文件。
在這個小例子中,咱們讀取Spark文件夾下的NOTICE文件裏的內容,而後統計詞頻,最後生成一張圖表。示例很簡單,直接貼出代碼截圖和最後的結果:
 
 
源代碼:
# coding: utf-8

# In[1]:

import re
from operator import add


# In[13]:

file_in = sc.textFile("/home/carl/spark/NOTICE")


# In[3]:

words = file_in.flatMap(lambda line: re.split(' ', line.lower().strip()))


# In[4]:

words = words.filter(lambda w: len(w) > 3)


# In[5]:

words = words.map(lambda w:(w,1))


# In[6]:

words = words.reduceByKey(add)


# In[7]:

words = words.map(lambda x: (x[1], x[0])).sortByKey(False)


# In[8]:

words.take(15)


# In[9]:

get_ipython().magic(u'matplotlib inline')
import matplotlib.pyplot as plt

def histogram(words):
    count = map(lambda x: x[1], words)
    word = map(lambda x:x[0], words)
    plt.barh(range(len(count)), count, color="green")
    plt.yticks(range(len(count)), word)


# In[10]:

words = words.map(lambda x:(x[1], x[0]))


# In[11]:

words.take(15)


# In[12]:

histogram(words.take(15))
View Code
 
這些內容是在學習  Spark for Python Developers 這本書過程當中的隨筆,接下來還會繼續分享和Spark相關的知識,有興趣的朋友歡迎關注本博客,也歡迎你們留言進行討論。
福利Spark for Python Developers電子版下載連接: Spark for Python Developers.pdf
 
咱們處於大數據時代,對數據處理感興趣的朋友歡迎查看另外一個系列隨筆:  利用Python進行數據分析 基礎系列隨筆彙總 
若是你對網絡爬蟲感興趣,請查看另外一篇隨筆:  網絡爬蟲:使用Scrapy框架編寫一個抓取書籍信息的爬蟲服務 
相關文章
相關標籤/搜索