pycharm下與spark的互動 詳細配置說明以及spark 執行簡單例子

luqin_發表於2018-12-29

前提你本地的pyspark是可以執行的,如果有不明白的,可以看我的部落格:https://blog.csdn.net/Lq_520/article/details/85323058

下面開始了,試了無數次才成功的:

pycharm的安裝,不會的可以看我的部落格:https://blog.csdn.net/Lq_520/article/details/83584987

這樣所有的安裝配置都齊活了,開始在pycharm中開始配置。

首先建立一個工程檔案.py檔案,在網上看了無數個部落格 ,都有問題,沒弄出來,結果無意中就自己弄出來了。

1.開啟pycharm-(左上角)file—settings–Project Interpreter–選擇你的python環境

2.找到你的spark安裝路徑和檔案:D:\lq\spark\python\lib 你會看到有兩個壓縮檔案 在這裡插入圖片描述

將這兩個檔案進行解壓 貼上 複製 到你所選python環境的Lib\site-packages中 ,例如我的是:D:\lq\env\venv\Lib\site-packages,具體圖片如下圖所示:
在這裡插入圖片描述

然後在重新開啟你的pycharm工程檔案,pyspark就不會報紅了,l例如我的執行程式:

from pyspark import *
import os

if __name__ == '__main__':
    # Windows的Spark安裝目錄
    os.environ['SPARK_HOME'] = 'D:\lq\spark'
    # Create SparkConf
    conf = SparkConf()\
        .setAppName("WordCount")\
        .setMaster("local")\
        # Create SparkContext
    sc = SparkContext(conf=conf)
    # 從本地模擬資料
    datas = ["you,jump", "i,jump"]
    # Create RDD
    rdd = sc.parallelize(datas)
    print(rdd.count())  # 2
    print(rdd.first())  # you,jum

    # WordCount
    wordcount = rdd.flatMap(lambda line: line.split(",")) \
        .map(lambda word: (word, 1)) \
        .reduceByKey(lambda a, b: a + b)
    for wc in wordcount.collect():
        print(wc[0] + "   " + str(wc[1]))


這時我們會報錯誤如下圖所示:

在這裡插入圖片描述

有的人系統找不到檔案那是亂碼的,剛開始我也是,一直不知道是什麼錯誤,這裡我們需要對consol編碼進行設定,我也是找了很久,對pycharm不是很熟吧,具體設定如下圖

在這裡插入圖片描述
將global encoding 設定成GBK,這樣與windows編碼一致,這樣就知道是什麼錯誤了。言歸正傳,對於"""Exception: Java gateway process exited before sending the driver its port number “”"錯誤,解決其實很簡單,在程式碼中我們需要對 JAVA_HOME 進行設定,即可解決。在程式碼中加上如下程式碼即可。

 os.environ['JAVA_HOME'] = 'D:\lq\Java\jdk1.8.0_191'

輸出結果如下圖所示:

在這裡插入圖片描述

相關文章