Windows上的PyCharm 遠程連接調試pyspark

在實驗室配置了一個Spark集群,傳統(tǒng)的方法就是在Windows本地開發(fā)項目,完了后打包,然后上傳到Linux服務器上,最后執(zhí)行spark-submit 。但是在實際開發(fā)用還是感覺用IDE比較好,于是找到了Pycharm遠程連接Linux服務器開發(fā)Spark項目的方法。

1.設置環(huán)境變量

在Linux中/usr/local/spark/spark-2.2.0-bin-hadoop2.7/python/lib 目錄下py4j 包添加在系統(tǒng)環(huán)境變量中,注意源碼包的版本問題,要與下面安裝的py4j 的版本一致才行。

vim /etc/profile
#添加環(huán)境變量
export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip
#生效
source /etc/profile

2.遠程服務器同步配置

2.1在Linux上安裝py4j

我的集群(Centos 7)上原本是Python2.7 ,后來是工作需要改為了Python3.6.4 。在Centos 7 安裝py4j 首先要安裝pip3 ,這里采用Yum安裝的方式。

在使用yum安裝的時候會出現無法使用yum的錯誤,根據提示信息將文件最上面的改為python2.7即可。

yum install pip3
pip3 install py4j
image.png

2.2配置Deployment

首先我們需要配置PyCharm通服務器的代碼同步,打開Tools | Deployment | Configuration

點擊左邊的“+”添加一個部署配置,輸入名字,類型選SFTP

image.png

添加一個部署配置,輸入自己的遠程服務器的IP地址59.68.29.XXRoot path 填寫Linux服務器中的文件上傳的根目錄,注意這個目錄必須當前用戶有權創(chuàng)建文件,User name 為登錄Linux服務器登錄名,可以先測試一下連接是否成功。

image.png

Mapping 選項中,Local Path為Windows下的項目存放路徑,就是將本地目錄同步到服務器上面,Deployment path on server'tset' 的意思就是在上面的Root Path 路徑后面追加的路徑地址。

image.png

2.3Python interpreter配置

配置Python的解釋器,下面先添加遠程服務器:

image.png

采用SSH連接,添加下面的基本參數即可。

image.png

如果在Package中沒有自動導入這個包需要手動添加,點擊右邊的加號即可。

image.png
image.png

3.配置Run以及運行實例

將上面的配置結束之后,配置Run的參數。主要是配置Environment variables 參數,將SPARK_HOME =/usr/local/spark/spark-2.2.0-bin-hadoop2.7PYTHONPATH=/usr/local/spark/spark-2.2.0-bin-hadoop2.7/python ,因為我的spark集群建立在hadoop上我還添加了HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.2 、JAVA_HOME=/usr/local/java/jdk1.8.0_144配置好就行了。

image.png

最后先將項目上傳到Linux服務器中,Update to.. 是可以選擇不同的遠程服務器。

image.png

實例代碼:

import os
import sys

from pyspark.sql import SparkSession

#os.environ['SPARK_HOME'] = 'usr/local/spark/spark-2.2.0-bin-hadoop2.7'
#sys.path.append('/usr/local/spark/spark-2.2.0-bin-hadoop2.7/python')
sys.path.append('/usr/local/spark/spark-2.2.0-bin-hadoop2.7/python/lib')

if __name__ == '__main__':

    spark = SparkSession.builder\
        .appName("Python Spark SQL basic example")\
        .config("spark.some.config.option", "some-value")\
        .getOrCreate()

    spark.sql("show databases").show()

運行結果:

image.png

運行成功!但是出現的問題是我的這個數據庫是連接的是哪個數據庫呢?我集群中的用的是Hive中元數據庫為Mysql,有以下數據庫:

image.png

這個錯誤待解決......

4.參考資料

https://www.bbsmax.com/A/gGdXVO9QJ4/

http://blog.csdn.net/u014770372/article/details/78957188

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容