Spark環境配置筆記

Spark環境配置筆記

本地Pycharm調試Spark環境配置

  1. Pycharm 首先得裝上(儘量別用社區版)
  2. Java8/ Python2都安裝好(沒難度,有問題自行百度)
  3. 下載Hadoop包/Scala包/Spark-Hadoop包(注意版本對應)
  4. 不管有用沒用先用pip把py4j模塊裝上。同時pip安裝pyspark模塊
  5. Pycharm中 Run/Debug Configurations -> Environment -> Environment variables: 添加(SPARK_HOMEPYTHONPATHHADOOP_HOME)三個環境變量

PYTHONUNBUFFERED=1;SPARK_HOME=D:\spark-2.4.3-bin-hadoop2.6;PYTHONPATH=D:\spark-2.4.3-bin-hadoop2.6\python;HADOOP_HOME=D:\hadoop-2.6.5
在這裏插入圖片描述

  1. 爲PySpark項目添加依賴庫:
    Pycharm中 File -> Project: -> Project Structure -> Add ContentRoot
    (依賴庫zip包都在spark-hadoop文件夾 /bin 目錄下)
    在這裏插入圖片描述
  2. 配置完成。

PySpark本地調試遇到的坑

  • SparkConf的坑
    初始化SparkContext的代碼如下所示:
conf = SparkConf().setAppName("wordcount").setMaster("local")
sc = SparkContext(conf)

結果報告運行錯誤:

ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: Could not parse Master URL: '<pyspark.conf.SparkConf object at 0x0000000002D95908>'

根據錯誤提示,以爲是Master的設置有問題,實際上是實例化SparkContext有問題。閱讀代碼,發現它的構造函數聲明如下所示:

    def __init__(self, master=None, appName=None, sparkHome=None, pyFiles=None,
               environment=None, batchSize=0, serializer=PickleSerializer(), conf=None,
               gateway=None, jsc=None, profiler_cls=BasicProfiler):

而前面的代碼僅僅是簡單的將conf傳遞給SparkContext構造函數,這就會導致Spark會將conf看做是master參數的值,即默認爲第一個參數。所以這裏要帶名參數:

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