回覆列表
  • 1 # 資料大視界

    在mac系統安裝pyspark教程

    介紹

    Apache Spark是資料處理框架中最熱門,規模最大的開源專案之一,它具有豐富的高階API,可用於Scala,Python,Java和R等程式語言。

    Spark提供了一個很棒的Python API,稱為PySpark。這使Python程式設計師可以與Spark框架進行互動-允許您大規模處理資料並使用分散式檔案系統上的物件。

    在Mac上安裝Spark(本地)

    第一步:安裝Brew

    如果已經安裝過了brew,可以跳過此步驟 :

    1. 在Mac上開啟終端(terminal)

    2. 輸入下面的命令。

    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    3.點選回車繼續,或按任何其他鍵放棄。

    第二步:安裝Anaconda

    在同一終端中,只需輸入:

    $ brew cask install anaconda

    第三步:安裝PySpark

    1. 終端型別

    $ brew install apache-spark

    2. 如果看到以下錯誤訊息,

    請執行

    $ brew cask install caskroom/versions/java8

    來安裝Java8,如果已安裝,則不會看到此錯誤。

    3.在終端上輸入,檢查pyspark是否正確安裝。

    $ pyspark

    如果您看到以下內容,則表明它已正確安裝:

    使用PySpark準備開啟Jupyter筆記本

    本節假定PySpark已正確安裝,並且在終端上鍵入時沒有出現錯誤

    $ pyspark

    在這一步,我將介紹您必須執行的步驟,以建立使用SparkContext自動初始化的Jupyter Notebook。為了為您的終端會話建立全域性配置檔案,您將需要建立或修改.bash_profile或.bashrc檔案。在這裡,我將使用.bash_profile作為示例

    1. 檢查您的系統中是否有.bash_profile $ ls -a,如果沒有,請使用建立一個

    $ touch ~/.bash_profile

    2. 透過執行查詢Spark路徑

    $ brew info apache-spark

    3.如果您已經有一個.bash_profile,請執行

    export SPARK_PATH=(path found above by running brew info apache-spark)export PYSPARK_DRIVER_PYTHON="jupyter"export PYSPARK_DRIVER_PYTHON_OPTS="notebook"#For python 3, You have to add the line below or you will get an error#export PYSPARK_PYTHON=python3alias snotebook="$SPARK_PATH/bin/pyspark --master local[2]"

    4.按ESC退出插入模式,輸入:wq以退出VIM。您可以在此處完善更多的VIM命令。

    5.透過$ source ~/.bash_profile在Jupyter Notebook中使用PySpark的最喜歡的方式重新整理終端配置檔案是透過安裝findSpark軟體包,該軟體包使我可以在程式碼中使用Spark Context。

    findSpark包並非特定於Jupyter Notebook,您也可以在自己喜歡的IDE中使用此技巧。

    透過在終端上執行以下命令來安裝findspark

    $ pip install findspark

    啟動常規的Jupyter Notebook,然後執行以下命令:

    # useful to have this code snippet to avoid getting an error in case forgeting# to close spark try: spark.stop()except: pass # Using findspark to find automatically the spark folderimport findsparkfindspark.init() # import python librariesimport random # initializefrom pyspark.sql import SparkSessionspark = SparkSession.builder.master("local[*]").getOrCreate()num_samples = 100000000 def inside(p): x, y = random.random(), random.random() return x*x + y*y < 1 count = spark.sparkContext.parallelize(range(0, num_samples)).filter(inside).count()pi = 4 * count / num_samplesprint(pi)

    輸出應為:

    3.14179228

    啟動SparkSession

    SparkSession是Spark功能的主要切入點:它表示與Spark叢集的連線,您可以使用它來建立RDD並在該叢集上廣播變數。當您使用Spark時,一切都以此SparkSession開始和結束。請注意,SparkSession是Spark 2.0的一項新功能,可最大程度地減少要記住或構造的概念數量。(在Spark 2.0.0之前,三個主要的連線物件是SparkContext,SqlContext和HiveContext)。

    在互動式環境中,已經在名為spark的變數中為您建立了SparkSession。為了保持一致性,在自己的應用程式中建立名稱時應使用該名稱。

    您可以透過生成器模式建立一個新的SparkSession,該生成器模式使用“流利的介面”樣式的編碼透過將方法連結在一起來構建新物件。可以傳遞Spark屬性,如以下示例所示:

    from pyspark.sql import SparkSessionspark = SparkSession\ .builder .master("local[*]") .config("spark.driver.cores", 1) .appName("test pyspark") .getOrCreate()

    在您的應用程式結束時,請記住呼叫spark.stop() 以結束SparkSession。讓我們瞭解上面定義的各種設定:

    · master:設定要連線的Spark主URL,例如“ local”在本地執行,“ local [4]”在4核本地執行,或“ spark:// master:7077”在Spark獨立叢集上執行。

    · config:透過指定(鍵,值)對來設定配置選項。

    · appName:設定應用程式的名稱,如果未設定名稱,將使用隨機生成的名稱。

    · getOrCreate:獲取一個現有檔案SparkSession;如果不存在,則根據此構建器中設定的選項建立一個新檔案。如果返回了現有的SparkSession,SQLContext則將應用此構建器中指定的影響配置的配置選項。由於SparkContext無法在執行時修改配置(您必須先停止現有上下文),而SQLContext可以在執行時修改配置。

    結論

    如果您有大型資料集需要處理,推薦您使用pyspark。對於小型資料集(幾GB),建議使用Pandas。

  • 中秋節和大豐收的關聯?
  • 怎樣在內網建一個外網能訪問的FTP伺服器?