我正在try 使用Apache Sedona在Delta Live Table中运行一些地理空间转换.我试图定义一个简单的例子来说明我遇到的问题.
在笔记本的第一个单元中,我安装了apache sedona Python包:
%pip install apache-sedona
那么我只使用SedonaRegistrator.registerAll(在SQL中启用地理空间处理)并返回空数据帧(无论如何都无法访问该代码):
import dlt
from pyspark.sql import SparkSession
from sedona.register import SedonaRegistrator
@dlt.table(comment="Test temporary table", temporary=True)
def my_temp_table():
SedonaRegistrator.registerAll(spark)
return spark.createDataFrame(data=[], schema=StructType([]))
我创建了DLT管道,除了spark配置之外,其余都是默认的:
这是spark.jars.packages
:org.apache.sedona:sedona-python-adapter-3.0_2.12:1.2.0-incubating,org.datasyslab:geotools-wrapper:1.1.0-25.2
的未切割值.
根据这documentation条,这是必需的.
运行管道时,出现以下错误:
py4j.Py4JException: An exception was raised by the Python Proxy. Return Message: Traceback (most recent call last):
File "/databricks/spark/python/lib/py4j-0.10.9.1-src.zip/py4j/java_gateway.py", line 2442, in _call_proxy
return_value = getattr(self.pool[obj_id], method)(*params)
File "/databricks/spark/python/dlt/helpers.py", line 22, in call
res = self.func()
File "<command--1>", line 8, in my_temp_table
File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-0ecd1771-412a-4887-9fc3-44233ebe4058/lib/python3.8/site-packages/sedona/register/geo_registrator.py", line 43, in registerAll
cls.register(spark)
File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-0ecd1771-412a-4887-9fc3-44233ebe4058/lib/python3.8/site-packages/sedona/register/geo_registrator.py", line 48, in register
return spark._jvm.SedonaSQLRegistrator.registerAll(spark._jsparkSession)
TypeError: 'JavaPackage' object is not callable
我可以通过在我的计算机上运行spark并避免安装上面spark.jars.packages
中指定的包来重现此错误.
我猜这个DLT管道没有正确配置以安装Apache Sedona.我找不到任何描述如何在DLT管道上安装Sedona或其他软件包的文档.
到目前为止,我也try 过,但没有成功:
- 使用初始化脚本->;DLT中不支持
- 使用jar库->;DLT中不支持
- 使用maven库->;DLT中不支持
有人知道如何/是否可能做到这一点吗?