1. 程式人生 > 實用技巧 >python3 + conda 部署geospark

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修復

  pip3 install --ignore-installed pyproj==2.4.0 -i https://pypi.douban.com/simple/

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)