python3 + conda 部署geospark
以下操作,叢集每臺機器都要做
以下操作,叢集每臺機器都要做
以下操作,叢集每臺機器都要做
--------------------------------------------------------------------------------------------------------------------------------------------
1.安裝conda,我選擇是 miniconda3
2.安裝geospark
從git hub上下載:https://github.com/apache/incubator-sedona/tree/master/python/geospark
安裝主包:
pip installgeospark-1.3.0-py3-none-any.whl
安裝 PyArrow:
spark.sql.execution.arrow.enabled 設定為 true ,則必須安裝
pip3 install PyArrow==0.14.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
安裝pyproj==2.4.0:
使用geopandas進行座標系轉換時,報錯RuntimeError: b'no arguments in initialization list' 問題是由proj造成的,可以通過更新proj修復
3. 把自己的程式放到某個位置,比如 /opt/myproject。然後在/opt/software/miniconda3/envs/datamining/lib/python3.6/site-packages 目錄下建立 my.pth檔案,加入以下包,否則無法識別自定義包。
比如以下內容:
4. 下載下來的對應jar包(GeoSpark\python\geospark\jars\2_4) 拷貝到/opt/cloudera/parcels/SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179/lib/spark2/jars 下面。 (我使用的是 cloudera manager)
5.環境變數設定
6.重啟叢集
7.測試
測試程式碼如下(返回 True就是ok了):
from geo_pyspark.utils import GeoSparkKryoRegistrator, KryoSerializer
from geo_pyspark.register import GeoSparkRegistrator
import pandas as pd
session = SparkSession.builder. \
appName("test"). \
config("spark.serializer", KryoSerializer.getName). \
config("spark.kryo.registrator", GeoSparkKryoRegistrator.getName). \
getOrCreate()
GeoSparkRegistrator.registerAll(session)