簡體   English   中英

使用 apache-sedona 在 Synapse Spark Pool 中使用 SparkSQL/Python 的空間?

[英]Spatial with SparkSQL/Python in Synapse Spark Pool using apache-sedona?

我想對大型數據集進行空間查詢; 例如 geopandas 會太慢。 我在這里找到的靈感: https ://anant-sharma.medium.com/apache-sedona-geospark-using-pyspark-e60485318fbe

在 Synapse Analytics 的 Spark Pool 中,我准備了(通過 Azure 門戶):

Apache Spark 池/設置/包/需求文件:

要求.txt:

azure-storage-file-share
geopandas
apache-sedona

Apache Spark Pool / Settings / Packages / Workspace 包:

geotools-wrapper-geotools-24.1.jar
sedona-sql-3.0_2.12-1.2.0-incubating.jar

Apache Spark 池 / 設置 / 包 / Spark 配置

配置文件:

spark.serializer org.apache.spark.serializer.KryoSerializer
spark.kryo.registrator org.apache.sedona.core.serde.SedonaKryoRegistrator

在 Pyspark 筆記本中

print(spark.version)
print(spark.conf.get("spark.kryo.registrator"))
print(spark.conf.get("spark.serializer"))

輸出是:

3.1.2.5.0-58001107
org.apache.sedona.core.serde.SedonaKryoRegistrator
org.apache.spark.serializer.KryoSerializer

然后我嘗試了:

from pyspark.sql import SparkSession
from sedona.register import SedonaRegistrator  
from sedona.utils import SedonaKryoRegistrator, KryoSerializer
spark = SparkSession.builder.master("local[*]").appName("Sedona App").config("spark.serializer", KryoSerializer.getName).config("spark.kryo.registrator", SedonaKryoRegistrator.getName).getOrCreate()
SedonaRegistrator.registerAll(spark)

但它失敗了:Py4JJavaError:調用 o636.count 時出錯。 :org.apache.spark.SparkException:作業因階段失敗而中止:任務序列化失敗:org.apache.spark.SparkException:無法向 Kryo 注冊類

一個簡單的檢查東西是否正確安裝可能會允許這樣做:

%%sql
SELECT ST_Point(0,0);

請幫助獲取在 Synapse notebook 中運行的 pyspark 中注冊的空間功能!

根據我最后的重現,我能夠成功運行上述命令而沒有任何問題。

我剛剛安裝了包含apache-sedonarequirement.txt文件並下載了以下兩個 jar 文件:

注意: config.txt文件不是必需的。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM