我正在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配置之外,其余都是默认的:

DLT Spark Configuration

这是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 过,但没有成功:

  • 使用初始化脚本-&gt;DLT中不支持
  • 使用jar库-&gt;DLT中不支持
  • 使用maven库-&gt;DLT中不支持

有人知道如何/是否可能做到这一点吗?

推荐答案

不幸的是,Delta Live表还不支持安装第三方Java库,因此您不能将Sedona与DLT right now一起使用.

但是,如果您对Databricks上的地理空间内容感兴趣,您可以查看最近发布的project Mosaic(blog with announcement),它支持许多"标准"地理空间功能,但针对Databricks进行了大量优化,并且还可用于Delta Live Tables.以下是quickstart guide中采用的DLT管道示例,使用st_contains等功能:

enter image description here

Python相关问答推荐

根据在同一数据框中的查找向数据框添加值

Python上的Instagram API:缺少client_id参数"

有症状地 destruct 了Python中的regex?

无法通过python-jira访问jira工作日志(log)中的 comments

2D空间中的反旋算法

加速Python循环

如何在Python中并行化以下搜索?

numpy卷积与有效

avxspan与pandas period_range

从spaCy的句子中提取日期

Python列表不会在条件while循环中正确随机化'

如何删除重复的文字翻拍?

使用类型提示进行类型转换

浏览超过10k页获取数据,解析:欧洲搜索服务:从欧盟站点收集机会的微小刮刀&

Python OPCUA,modbus通信代码运行3小时后出现RuntimeError

在Pandas 中以十六进制显示/打印列?

查找数据帧的给定列中是否存在特定值

为什么在不先将包作为模块导入的情况下相对导入不起作用

对当前的鼹鼠进行编码,并且我的按键获得了注册

如何在微调Whisper模型时更改数据集?