PySpark 作為資料科學和人工智慧領域的重要工具,其環境設定至關重要。本文詳細介紹瞭如何在不同平台上設定 PySpark 環境,讓讀者能夠快速上手,開始資料分析和機器學習的旅程。對於 Windows 使用者,本文也提供了詳細的步驟說明,包括如何下載 Spark、設定環境變數、安裝必要的工具以及在 Jupyter Notebook 中使用 PySpark。此外,本文還針對常見問題提供瞭解決方案,例如 Hadoop 環境的設定以及 winutils.exe 的組態,確保讀者能夠順利搭建 PySpark 環境。

關於本文作者與技術審閱者

作者介紹

本文由四位在資料科學與人工智慧領域具有豐富經驗的專家共同撰寫。

Ramcharan Kakarla

Ramcharan Kakarla 目前是 Altice USA 的首席機器學習(ML)專家。他是一位熱衷於資料科學與人工智慧的倡導者,擁有十年的業界經驗。Ramcharan 擁有奧克拉荷馬州立大學的資料探勘碩士學位,並正在加州大學洛杉磯分校攻讀管理學碩士學位。在加入 UCLA 和 OSU 之前,他在印度 Sastra 大學獲得電機電子工程學士學位。他的職業生涯始於擔任績效工程師,曾與包括 State Farm、British Airways、Comcast 和 JP Morgan Chase 在內的多家《財富》500強企業合作。目前,他專注於構建生成式人工智慧(Generative AI)、資料科學解決方案以及利用大資料的框架。Ramcharan 曾在預測分析領域發表多篇論文和海報,並於 2015 年擔任 SAS 全球大使。

Sundar Krishnan

Sundar Krishnan 是 CVS Health 的高階資料科學經理。他在長官跨功能資料科學團隊方面擁有超過 12 年的豐富經驗,並被認為是人工智慧(AI)、機器學習(ML)和雲端平台的專家。Sundar 擁有建立高績效團隊並實施創新 AI 策略以最佳化營運成本和產生可觀收入的成功經驗。他在從零到一的產品開發方面表現出色,曾成功長官團隊將 GenAI 和資料科學產品從概念推向市場。Sundar 在印度泰米爾納德邦出生長大,並在 Coimbatore 的政府理工學院獲得學士學位。隨後,他在奧克拉荷馬州立大學完成了碩士學位。Sundar 平時會在 Medium 上撰寫有關其資料科學工作的部落格。

Balaji Dhamodharan

Balaji Dhamodharan 是一位獲獎的全球資料科學領袖,擅長指導團隊開發和實施創新、可擴充套件的機器學習(ML)解決方案。目前,他在 NXP 半導體公司長官 AI/ML 和 MLOps 策略計劃。Balaji 擁有超過十年的跨行業大型技術解決方案交付經驗。他的專業知識涵蓋軟體工程、企業 AI 平台、AutoML、MLOps 和生成式人工智慧(Generative AI)技術。Balaji 擁有奧克拉荷馬州立大學的管理資訊系統碩士學位和印第安納大學的資料科學碩士學位。他的故鄉在印度金奈,目前居住在德州奧斯汀。

Venkata Gunnu

Venkata Gunnu 是 JP Morgan Chase 的知識管理與創新高階執行董事。他是一位成功的企業級資料和資料科學解決方案、GenAI、流程改進以及資料和資料科學為中心的產品開發戰略家。Venkata 具備將概念轉化為實施的能力,並在控制多個專案以提升組織效率和最佳化資源方面取得成功。他是一位以資料為導向且具備分析思維的專家,成功實作了職能自動化、標準化資料管理協定,並引入新的商業智慧解決方案。

技術審閱者介紹

Anvesh Reddy Minukuri

Anvesh Reddy Minukuri 目前擔任 JP Morgan Chase 的生成式人工智慧/機器學習工程高階副執行長,專攻自然語言處理(NLP)應用。Anvesh 在 IT 領域擁有超過 11 年的經驗,在分析領域有 9 年的經驗,具備開發預測性和規範性解決方案的豐富背景。他擁有奧克拉荷馬州立大學的資料探勘碩士學位和印度 JNTU 大學的電腦科學學士學位。

Anvesh 的職業生涯始於軟體工程師,曾與 GE、Cisco 和 Tech Mahindra 等《財富》500 強客戶合作。他在幫助利益相關者利用 AI 和 ML 取得可行的資料洞察方面發揮了重要作用,並主導了機器學習解決方案的設計。Anvesh 的專業知識包括構建資料科學解決方案和 ML 管道框架,以應對預測性、規範性和 NLP 挑戰。他擅長 LLM 模型的開發、評估和最佳化,在 NLP 預處理、資料儲存、基礎設施管理和擴充套件方面表現出色。

Anvesh 曾透過多篇論文和海報對 AI/ML 領域做出重要貢獻,並推動了 NLP 在多樣化應用中的採用。

本章重點

本章節主要介紹了本文的作者和技術審閱者的背景和專業經驗。他們均為資料科學和人工智慧領域的專家,具備豐富的業界經驗和學術背景。他們的專業知識涵蓋了機器學習、生成式人工智慧、自然語言處理等領域,為本文的撰寫提供了堅實的基礎。

設定 PySpark 環境

本章節專注於設定 PySpark 環境。我們將討論多種設定選項,您可以選擇最適合您的方式。如果您已經設定好了環境,可以直接跳到本章節後面的「基本操作」部分。

本章涵蓋以下主題:

  • 使用 Anaconda 進行本地安裝
  • 根據 Docker 的安裝
  • Databricks Community Edition
  • GitHub Codespaces

使用 Anaconda 進行本地安裝

安裝 Anaconda

首先,您需要從 https://www.anaconda.com/download 下載 Anaconda。您可以免費下載個人版。我們建議使用最新版本的 Python(Python 3.11),因為我們在所有的範例中都使用了這個版本。如果您已經安裝了其他版本,請相應地調整您的程式碼。

安裝 Anaconda 後,您可以在終端機或 Anaconda 提示字元中執行以下命令,以確認安裝是否成功。

conda info

輸出結果

輸出結果應該類別似如下所示:

(base) sundar@Sundars-MacBook-Pro / % conda info
active environment : base
active env location : /Users/sundar/anaconda3
shell level : 1
user config file : /Users/sundar/.condarc
populated config files : /Users/sundar/.condarc
conda version : 23.7.4
conda-build version : 3.26.1
python version : 3.11.5.final.0
virtual packages : __archspec=1=x86_64
__osx=10.16=0
__unix=0=0
base environment : /Users/sundar/anaconda3 (writable)
conda av data dir : /Users/sundar/anaconda3/etc/conda
conda av metadata url : None
channel URLs : https://repo.anaconda.com/pkgs/main/osx-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/osx-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /Users/sundar/anaconda3/pkgs
/Users/sundar/.conda/pkgs
envs directories : /Users/sundar/anaconda3/envs
/Users/sundar/.conda/envs
platform : osx-64
user-agent : conda/23.7.4 requests/2.31.0 CPython/3.11.5
Darwin/21.6.0 OSX/10.16 aau/0.4.2
c/1VatYgfffAMMKXQOgPBo-Q s/nX_yel1PDom6K2c64Czdcg
e/u9Ki7wvzxHtwkihYPDu5wA
UID:GID : 501:20
netrc file : /Users/sundar/.netrc
offline mode : False

內容解密:

此輸出結果顯示了 Anaconda 的安裝資訊,包括目前使用的環境、Conda 版本、Python 版本等。這些資訊對於確認安裝是否正確以及後續的環境設定非常重要。

設定 PySpark 環境的步驟解說

  1. 下載並安裝 Anaconda:首先,您需要下載並安裝 Anaconda。這是設定 PySpark 環境的第一步。
  2. 確認安裝:安裝完成後,透過執行 conda info 命令來確認安裝是否成功。
  3. 檢視輸出結果:透過檢視輸出結果,您可以瞭解目前的環境設定和 Conda 的版本資訊。

重點整理:

  • 使用 Anaconda 可以簡化 PySpark 環境的設定。
  • 確認安裝是否正確對於後續的操作非常重要。
  • 瞭解 Conda 和 Python 的版本資訊有助於避免相容性問題。

後續步驟:

在成功安裝 Anaconda 後,您可以繼續進行 PySpark 的安裝和設定。下一章節將介紹如何使用 Anaconda 安裝 PySpark。

使用Conda建立PySpark環境

在進行Python專案開發時,版本控制是一個非常重要的議題。不同的Python版本可能會導致程式執行結果的不同,因此使用虛擬環境(Virtual Environment)來隔離不同專案的依賴關係是一個良好的實踐。Anaconda是一個非常流行的Python環境管理工具,可以幫助我們輕鬆地建立和管理不同的Python環境。

Conda 環境建立

首先,我們需要了解如何使用Conda建立新的環境。Conda的所有操作都以conda關鍵字開頭。有關Conda操作的更多資訊,可以參考Conda的官方檔案:https://docs.conda.io/。

建立新的環境的語法如下:

conda create --name ENVNAME python=3.11

在建立環境之前,我們可以使用以下命令列出目前已存在的環境:

conda env list

執行此命令後,我們可以看到目前已存在的環境列表。

環境列表(建立前)

# conda environments:
base                  *  /Users/sundar/anaconda3

從輸出結果中,我們可以看到base環境是目前的活動環境。

建立 PySpark 環境

現在,我們來建立一個名為pyspark_env的新環境。

conda create --name pyspark_env python=3.11

執行此命令後,系統會提示我們輸入y以確認建立環境。建立完成後,再次執行conda env list命令,可以看到新的環境已經被建立。

環境列表(建立後)

# conda environments:
base                  /Users/sundar/anaconda3
pyspark_env           /Users/sundar/anaconda3/envs/pyspark_env

雖然新的環境已經被建立,但目前的活動環境仍然是base。我們可以使用以下命令啟用新的環境:

conda activate pyspark_env

啟用新的環境後,再次執行conda env list命令,可以看到目前的活動環境已經切換到pyspark_env

環境列表(切換後)

# conda environments:
base                  /Users/sundar/anaconda3
pyspark_env           *  /Users/sundar/anaconda3/envs/pyspark_env

下載和安裝 Apache Spark

接下來,我們需要下載和安裝 Apache Spark。可以從 https://spark.apache.org/downloads.html 下載最新的 Spark 版本。本範例使用 Spark 3.5.0。

下載完成後,需要解壓縮檔案。Mac/Linux 使用者可以使用以下命令:

tar -xzf spark-3.5.0-bin-hadoop3.tgz
mv spark-3.5.0-bin-hadoop3 /opt/spark-3.5.0

Windows 使用者可以使用以下命令:

tar -xzf spark-3.5.0-bin-hadoop3.tgz
move spark-3.5.0-bin-hadoop3 C:\Users\<username>\spark-3.5.0

安裝 Java 8 或更新版本

在安裝 PySpark 之前,需要確保系統中已安裝 Java 8 或更新版本。可以使用以下命令檢查 Java 版本:

java -version

輸出結果應該類別似於:

java version "21.0.2" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 21.0.2+13-LTS-58)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.2+13-LTS-58, mixed mode, sharing)

如果 Java 版本過舊,可以從 https://www.oracle.com/java/technologies/javase-downloads.html 下載最新的 Java 版本。

設定環境變數

Mac/Linux 使用者需要更新 ~/.bash_profile~/.bashrc 檔案以設定 Spark 環境變數。可以使用以下命令開啟 ~/.bash_profile 檔案:

vi ~/.bash_profile

在檔案中新增以下內容:

export SPARK_HOME=/opt/spark-3.5.0
export PATH=$SPARK_HOME/bin:$PATH
export PYSPARK_PYTHON=python3

儲存檔案後,執行以下命令以套用變更:

source ~/.bash_profile

Windows 使用者需要確保 Spark 資料夾存在於正確的路徑中,例如 C:\Users\<username>\spark-3.5.0

在 Windows 上設定 PySpark 環境

安裝與設定

在 Windows 上安裝 PySpark 需要進行多個步驟,包括下載 Spark、設定環境變數以及安裝必要的工具。以下將詳細介紹這些步驟。

步驟一:下載並安裝 Spark

首先,您需要從 Apache Spark 的官方網站下載 Spark。下載完成後,將其解壓縮到您選擇的目錄中,例如 C:\Users\username\spark-3.5.0

步驟二:建立 Hadoop 目錄並下載 Winutils.exe

  1. 開啟 Anaconda Prompt,並導航到 Spark 的安裝目錄。

    cd C:\Users\username\spark-3.5.0
    mkdir hadoop\bin
    
  2. 下載 winutils.exe 檔案並將其放置在 hadoop\bin 目錄中。您可以從 https://github.com/cdarlint/winutils 下載適合您 Hadoop 版本的 winutils.exe。對於 Hadoop 3.3 版本,您可以直接從 https://github.com/cdarlint/winutils/blob/master/hadoop-3.3.5/bin/winutils.exe 下載。

    將下載的 winutils.exe 檔案移動到 hadoop\bin 目錄中:

    move C:\Users\username\Downloads\winutils.exe C:\Users\username\spark-3.5.0\hadoop\bin
    

程式碼解析:

cd C:\Users\username\spark-3.5.0
mkdir hadoop\bin
move C:\Users\username\Downloads\winutils.exe C:\Users\username\spark-3.5.0\hadoop\bin

內容解密:

  • cd C:\Users\username\spark-3.5.0:切換到 Spark 的安裝目錄。
  • mkdir hadoop\bin:在 Spark 安裝目錄下建立 hadoop\bin 目錄。
  • move C:\Users\username\Downloads\winutils.exe C:\Users\username\spark-3.5.0\hadoop\bin:將下載的 winutils.exe 檔案移動到 hadoop\bin 目錄中。

步驟三:設定環境變數

  1. 開啟「環境變數」設定視窗,您可以在 Windows 搜尋列中搜尋「環境變數」或透過「系統屬性」>「進階」>「環境變數」找到。
  2. 在「使用者變數」標籤下,新增以下變數:
    • SPARK_HOME:變數值為 Spark 的安裝路徑,例如 C:\Users\username\spark-3.5.0
    • HADOOP_HOME:變數值為 Hadoop 的安裝路徑,例如 C:\Users\username\spark-3.5.0\hadoop
  3. 編輯 PATH 變數,新增 Spark 的 bin 目錄,例如 C:\Users\username\spark-3.5.0\bin

步驟四:執行 PySpark

完成上述設定後,重新啟動 Anaconda Prompt,並切換到 pyspark_env 環境。輸入 pyspark 命令,如果一切設定正確,您應該會看到 PySpark 的歡迎訊息。

設定 Jupyter Notebook

為了在 Jupyter Notebook 中使用 PySpark,您需要安裝 Jupyter 並進行一些額外的設定。

Windows 使用者

  1. 安裝 findspark 套件:
    python -m pip install findspark
    
  2. 直接執行 pyspark 應該會自動開啟 Jupyter Notebook。如果瀏覽器沒有自動開啟,您可以複製連結並貼上到瀏覽器中。

測試 PySpark 安裝

在 Jupyter Notebook 中執行以下程式碼以測試 PySpark 安裝:

import findspark
findspark.init()
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("PySpark Test").getOrCreate()
print(spark.sparkContext.appName)

程式碼解析:

import findspark
findspark.init()
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("PySpark Test").getOrCreate()
print(spark.sparkContext.appName)

內容解密:

  • import findspark:匯入 findspark 模組。
  • findspark.init():初始化 Spark 環境。
  • from pyspark.sql import SparkSession:從 PySpark 中匯入 SparkSession
  • spark = SparkSession.builder.appName("PySpark Test").getOrCreate():建立一個名為 “PySpark Test” 的 SparkSession。
  • print(spark.sparkContext.appName):列印目前 SparkSession 的應用程式名稱。

按照上述步驟,您應該能夠成功在 Windows 上設定 PySpark 環境並在 Jupyter Notebook 中使用它。