近期使用pyspark遇到的問題以及解決辦法

首先是環境安裝,可參考之前的博客,裏面有hadoop和spark環境配置的連接。最好先安裝hadoop。使用spark的話hadoop最好還是安裝下。https://blog.csdn.net/qq_37437983/article/details/105492509

一:在spark中運行python代碼的問題,真的這個對於經常使用spark的人來說可能是非常簡單的問題,但對於我這個急於求成的人來說,真的手足無措。看網上的方法都是使用spark-submit來提交,這樣總覺得很煩,如果可以之間在編譯器中點擊運行按鈕多好。然後具體找了找,可以在代碼頭部添加如下代碼,把環境加載進去就行了。

import os
import sys

os.environ['SPARK_HOME'] = r'/opt/spark-2.4.1/'
sys.path.append("/opt/spark-2.4.1/python/lib/py4j-0.10.7-src.zip")

 

二:首先就是第三方依賴的問題,這個問題我到現在還是沒有解決,但我的問題比較特殊。下面提供的是網上的通用解決辦法。

1,將需要使用依賴打包成zip格式(推薦virtualenv工具,具體用法百度),使用spark-submit提交代碼是使用--py-files提交,例如下面命令,提交了pye.zip。這個方法只適用於源碼中沒有.so文件的依賴,對於類似numpy這樣的依賴因爲其存在.so需要動態編譯,無法滿足,所以肯定會報錯numpy中缺少某個文件的錯誤。

spark-submit --master spark://ITS-Hadoop10:7077 --py-files pye.zip cal_similar_spark_mch.py 

方法不唯一,也可以在代碼中添加如下代碼:

sc = SparkContext(appName="calculate similar matrix" , master="spark://192.168.0.106:7077")
sc.addPyFile('pye.zip')

 2,直接使用anaconda(推薦),真的好使,誰用誰知道。

 

 三,類似java.lang.UnsupportedClassVersionError: org/apache/spark/network/util/ByteUnit : Unsupported major.minor version 52.0這樣的問題。解決辦法就是重裝jdk,這個原因就是jdk版本與spark版本不對應造成的。

 

四,pyspark連接mysql數據庫缺少驅動,java.sql.SQLException: No suitable driver.解決辦法就是下載驅動:點我呀。然後放到%JAVA_HOME%下的/jre/lib/ext/目錄下。這個是對於oracle JDK而言的。我一開始爲了省事安裝的openjdk,所以方法需要改變下,編輯 spark安裝目錄中的$SPARK_HOME/conf/spark-env.sh文件,加入如下命令。後面的路徑就是你存在sql驅動的位置,需要修改下。

export SPARK_CLASSPATH=/opt/spark-2.4.1/jars/mysql-connector-java-8.0.11.jar

 

五,還一個就是在代碼裏連接spark的問題。具體錯誤我忘了,大概就是master連不上。如下代碼:

sc = SparkContext(appName="calculate similar matrix" , master="spark://192.168.0.106:7077")

錯誤我在網上找了下,大概是這樣的:

Failed to connect to master 10.xx.xx.xx:7077

具體解決辦法參考:點我呀

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