在mac系統(tǒng)安裝pyspark教程
介紹
ApacheSpark是數據處理框架中最熱門,規(guī)模最大的開源項目之一,它具有豐富的高級API,可用于Scala,Python,Java和R等編程語言。
Spark提供了一個很棒的PythonAPI,稱為PySpark。這使Python程序員可以與Spark框架進行交互-允許您大規(guī)模處理數據并使用分布式文件系統(tǒng)上的對象。
在Mac上安裝Spark(本地)
第一步:安裝Brew
如果已經安裝過了brew,可以跳過此步驟:
1.在Mac上打開終端(terminal)
2.輸入下面的命令。
$/usr/bin/ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
3.點擊回車繼續(xù),或按任何其他鍵放棄。
4.它可能要求sudo特權。如果發(fā)生這種情況,需要輸入管理員密碼,然后再次點擊回車。
第二步:安裝Anaconda
在同一終端中,只需輸入:
$brewcaskinstallanaconda
第三步:安裝PySpark
1.終端類型
$brewinstallapache-spark
2.如果看到以下錯誤消息,
請執(zhí)行
$brewcaskinstallcaskroom/versions/java8
來安裝Java8,如果已安裝,則不會看到此錯誤。
3.在終端上輸入,檢查pyspark是否正確安裝。
$pyspark
如果您看到以下內容,則表明它已正確安裝:
使用PySpark準備打開Jupyter筆記本
本節(jié)假定PySpark已正確安裝,并且在終端上鍵入時沒有出現錯誤
$pyspark
在這一步,我將介紹您必須執(zhí)行的步驟,以創(chuàng)建使用SparkContext自動初始化的JupyterNotebook。為了為您的終端會話創(chuàng)建全局配置文件,您將需要創(chuàng)建或修改.bash_profile或.bashrc文件。在這里,我將使用.bash_profile作為示例
1.檢查您的系統(tǒng)中是否有.bash_profile$ls-a,如果沒有,請使用創(chuàng)建一個
$touch~/.bash_profile
2.通過運行查找Spark路徑
$brewinfoapache-spark
3.如果您已經有一個.bash_profile,請執(zhí)行
$vim~/.bash_profile
打開它,按”i“進行插入,然后將以下代碼粘貼到任何位置(請勿刪除文件中的任何內容):
exportSPARK_PATH=(pathfoundabovebyrunningbrewinfoapache-spark)
exportPYSPARK_DRIVER_PYTHON="jupyter"
exportPYSPARK_DRIVER_PYTHON_OPTS="notebook"
#Forpython3,Youhavetoaddthelinebeloworyouwillgetanerror#
exportPYSPARK_PYTHON=python3
aliassnotebook='$SPARK_PATH/bin/pyspark--masterlocal[2]'
4.按ESC退出插入模式,輸入:wq以退出VIM。您可以在此處完善更多的VIM命令。
5.通過$source~/.bash_profile在JupyterNotebook中使用PySpark的最喜歡的方式刷新終端配置文件是通過安裝findSpark軟件包,該軟件包使我可以在代碼中使用SparkContext。
findSpark包并非特定于JupyterNotebook,您也可以在自己喜歡的IDE中使用此技巧。
通過在終端上運行以下命令來安裝findspark
$pipinstallfindspark
啟動常規(guī)的JupyterNotebook,然后運行以下命令:
#usefultohavethiscodesnippettoavoidgettinganerrorincaseforgeting
#toclosespark
try:
spark.stop()
except:
pass
#Usingfindsparktofindautomaticallythesparkfolder
importfindspark
findspark.init()
#importpythonlibraries
importrandom
#initialize
frompyspark.sqlimportSparkSession
spark=SparkSession.builder.master("local[*]").getOrCreate()
num_samples=100000000
definside(p):
x,y=random.random(),random.random()
returnx*x+y*y<1
count=spark.sparkContext.parallelize(range(0,num_samples)).filter(inside).count()
pi=4*count/num_samples
print(pi)
輸出應為:
3.14179228
啟動SparkSession
SparkSession是Spark功能的主要切入點:它表示與Spark集群的連接,您可以使用它來創(chuàng)建RDD并在該集群上廣播變量。當您使用Spark時,一切都以此SparkSession開始和結束。請注意,SparkSession是Spark2.0的一項新功能,可最大程度地減少要記住或構造的概念數量。(在Spark2.0.0之前,三個主要的連接對象是SparkContext,SqlContext和HiveContext)。
在交互式環(huán)境中,已經在名為spark的變量中為您創(chuàng)建了SparkSession。為了保持一致性,在自己的應用程序中創(chuàng)建名稱時應使用該名稱。
您可以通過生成器模式創(chuàng)建一個新的SparkSession,該生成器模式使用“流利的接口”樣式的編碼通過將方法鏈接在一起來構建新對象。可以傳遞Spark屬性,如以下示例所示:
frompyspark.sqlimportSparkSession
spark=SparkSession\
.builder
.master("local[*]")
.config("spark.driver.cores",1)
.appName("testpyspark")
.getOrCreate()
在您的應用程序結束時,請記住調用spark.stop()以結束SparkSession。讓我們了解上面定義的各種設置:
·master:設置要連接的Spark主URL,例如“l(fā)ocal”在本地運行,“l(fā)ocal[4]”在4核本地運行,或“spark://master:7077”在Spark獨立集群上運行。
·config:通過指定(鍵,值)對來設置配置選項。
·appName:設置應用程序的名稱,如果未設置名稱,將使用隨機生成的名稱。
·getOrCreate:獲取一個現有文件SparkSession;如果不存在,則根據此構建器中設置的選項創(chuàng)建一個新文件。如果返回了現有的SparkSession,SQLContext則將應用此構建器中指定的影響配置的配置選項。由于SparkContext無法在運行時修改配置(您必須先停止現有上下文),而SQLContext可以在運行時修改配置。
結論
如果您有大型數據集需要處理,推薦您使用pyspark。對于小型數據集(幾GB),建議使用Pandas。