在實驗室配置了一個Spark集群,傳統(tǒng)的方法就是在Windows本地開發(fā)項目痹扇,完了后打包悯舟,然后上傳到Linux服務(wù)器上担租,最后執(zhí)行
spark-submit
。但是在實際開發(fā)用還是感覺用IDE比較好抵怎,于是找到了Pycharm遠(yuǎn)程連接Linux服務(wù)器開發(fā)Spark項目的方法奋救。
1.設(shè)置環(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.遠(yuǎn)程服務(wù)器同步配置
2.1在Linux上安裝py4j
我的集群(Centos 7)上原本是Python2.7
,后來是工作需要改為了Python3.6.4
姿染。在Centos 7 安裝py4j
首先要安裝pip3
背亥,這里采用Yum安裝的方式。
在使用yum安裝的時候會出現(xiàn)無法使用yum的錯誤,根據(jù)提示信息將文件最上面的改為python2.7即可狡汉。
yum install pip3
pip3 install py4j
2.2配置Deployment
首先我們需要配置PyCharm通服務(wù)器的代碼同步娄徊,打開Tools | Deployment | Configuration
點擊左邊的“+”添加一個部署配置,輸入名字盾戴,類型選SFTP
添加一個部署配置寄锐,輸入自己的遠(yuǎn)程服務(wù)器的IP地址59.68.29.XX
,Root path
填寫Linux服務(wù)器中的文件上傳的根目錄尖啡,注意這個目錄必須當(dāng)前用戶有權(quán)創(chuàng)建文件橄仆,User name
為登錄Linux服務(wù)器登錄名,可以先測試一下連接是否成功衅斩。
在Mapping
選項中沿癞,Local Path
為Windows下的項目存放路徑,就是將本地目錄同步到服務(wù)器上面矛渴,Deployment path on server'tset'
的意思就是在上面的Root Path
路徑后面追加的路徑地址椎扬。
2.3Python interpreter配置
配置Python的解釋器,下面先添加遠(yuǎn)程服務(wù)器:
采用SSH連接具温,添加下面的基本參數(shù)即可蚕涤。
如果在Package中沒有自動導(dǎo)入這個包需要手動添加,點擊右邊的加號即可铣猩。
3.配置Run以及運行實例
將上面的配置結(jié)束之后揖铜,配置Run的參數(shù)。主要是配置Environment variables
參數(shù)达皿,將SPARK_HOME =/usr/local/spark/spark-2.2.0-bin-hadoop2.7
和PYTHONPATH=/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
配置好就行了峦椰。
最后先將項目上傳到Linux服務(wù)器中龄寞,Update to..
是可以選擇不同的遠(yuǎn)程服務(wù)器。
實例代碼:
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()
運行結(jié)果:
運行成功汤功!但是出現(xiàn)的問題是我的這個數(shù)據(jù)庫是連接的是哪個數(shù)據(jù)庫呢物邑?我集群中的用的是Hive中元數(shù)據(jù)庫為Mysql,有以下數(shù)據(jù)庫:
這個錯誤待解決......