問題背景
公司目前有兩套Spark集羣和一套Hadoop集羣用來做 數據相關的存儲和計算。Hadoop的版本是2.7,Spark兩套集羣,一個是2.1.0版本,一個是 2.4.3版本。但是兩個Spark集羣安裝的Python版本都是一樣的,都是3.6.8
之前對大數據Spark瞭解不多,接手之後協助開發在提交 Python Spark任務的時候遇到問題。
最終定位是因爲Python版本的問題導致的。
關於PySpark
processing data with Spark in Python
就是使用Python語言開發Spark任務提交進行數據處理。 PySpark的版本和 Spark 本身的版本一致
關於PySpark的安裝和使用詳見官方文檔 https://spark.apache.org/docs/latest/api/python/getting_started/install.html#python-version-supported
Python版本選擇
因爲使用Python開發Spark任務,使用的Spark版本就和Python有着密切的關係,但是查找了 Spark官網 沒有找到明確的地方指定,什麼樣的Spark版本需要什麼樣的Python版本
網上也找到一個類似的,但是個人感覺不是很詳細。
於是自己使用爬蟲的方式,爬取了所有的Python版本清單和Spark清單,然後再選擇 Spark對應的Python版本的時候
1、先看當前Spark版本是多少
2、從Spark版本清單中找到該版本的發佈時間
3、然後去 Python的版本清單中, 按照python版本排序之後 距離Spark版本的發佈時間最近的Python版本,基本就是該Spark版本需要的最新的Python版本了
但是如果是兩個發佈時間非常接近,那就往下一個Python版本就行。
比如 Spark 2.1.0版本是2016/12/28發佈的,距離 2016/12/28 最近的Python版本是3.6.0,發佈於2016-12-23,按照常理也知道,Python新版本剛發佈5天,Spark發佈的版本中立馬就支持了,肯定不是很現實。
所以對於 Spark 2.1.0 我們應該選擇 3.5.9
。
Python爬取 Spark和Python版本程序 https://gitee.com/colin5063/cws-tools/blob/master/python/grab_spark_python_version.py
python 版本清單 https://gitee.com/colin5063/cws-tools/blob/master/common/python_versions.txt
spark 版本清單 https://gitee.com/colin5063/cws-tools/blob/master/common/spark_versions.txt
Spark版本對應的Python的最低版本
spark 2.1.0 到 2.4.8 版本之間,最低要求是 Python 3.4+
spark 3.0.0 以上, 最低要求是 Python 3.7+
Spark版本對應的Python的最高版本
判斷的依據就是上面提到的:
Python的版本清單中, **按照python版本排序之後** 距離Spark版本的發佈時間最近的Python版本,基本就是該Spark版本需要的最新的Python版本了
目前確定的是:
Spark 2.1.0 使用 Python 3.5.2
Spark 2.4.3 使用 Python 3.6.8
參考:
1、https://zhuanlan.zhihu.com/p/144151332