gpt4 book ai didi

python - 如何在 Databricks Delta Live 表上使用 Apache Sedona?

转载 作者:行者123 更新时间:2023-12-05 03:24:35 29 4
gpt4 key购买 nike

我正在尝试使用 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 或其他包的文档。

到目前为止我也尝试过但没有成功:

  • 使用初始化脚本 -> DLT 不支持
  • 使用 jar 库 -> DLT 不支持
  • 使用 Maven 库 -> DLT 不支持

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

最佳答案

不幸的是,Delta Live Tables 尚不支持安装第 3 方 Java 库,因此您现在不能将 Sedona 与 DLT 一起使用。

8月1日更新:目前支持DLT中的初始化脚本,可以关注Sedona instructions通过初始化脚本安装它。但要小心选择正确的版本,因为 DLT 使用修改后的运行时。

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

enter image description here

关于python - 如何在 Databricks Delta Live 表上使用 Apache Sedona?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72274155/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com