【问题标题】:Azure Databricks : Geospatial queries with Spark SQLAzure Databricks:使用 Spark SQL 的地理空间查询
【发布时间】:2021-05-27 20:28:07
【问题描述】:

目前我有以下:

  • 带有带有设备、位置和时间戳的表格的数据块;
  • Web Api 以 minLat、minLon、maxLat、maxLon 接收请求并创建一个 sql 查询,其中 lat 介于 minLat 和 maxLat 之间,lon 介于 minLon 和 maxLon 之间;
  • 函数将接收从 Web API 生成的查询,并与数据块中的集群创建 JDBC 连接以执行查询;

我想看看我是否可以通过一些空间库来改进“minLat 和 maxLat 之间的纬度以及 minLon 和 maxLon 之间的 lon”。我检查的一个这样的例子是 GeoSpark。这里的问题是当前版本的 GeoSpark(和 GeoSParkSql)仅适用于 spark v2.3,并且 databricks 中没有支持的运行时适用于该版本。

任何想法我能做什么?

注意:我现在不能偏离 SQL。

【问题讨论】:

    标签: apache-spark-sql geospatial databricks azure-databricks


    【解决方案1】:

    GeoSpark 以Apache Sedona project 身份加入 Apache 基金会,支持 Spark 3.0 的版本大约在 2 周前发布,因此您可以像 GeoSpark 一样使用它。

    附:为了自动注册函数,我们可以创建类似这样的东西,编译成 jar,然后使用 --conf spark.sql.extensions=...SomeExtensions 配置 Spark:

    class SomeExtensions extends (SparkSessionExtensions => Unit) {
      def apply(e: SparkSessionExtensions): Unit = {
        e.injectCheckRule(spark => {
          // Setup something
          _ => Unit
        })
      }
    }
    

    【讨论】:

    • 我接受你的回答,但也许你可以帮我做点什么。所以我能够注册东西,但它们只适用于特定的会话。我希望空间功能可以按集群方式使用,以便通过 JDBC 连接执行的查询可以使用它们。你知道怎么做吗?
    • 将库附加到集群(所谓的集群库:docs.databricks.com/libraries/index.html
    • 这是我的假设,但它不起作用,我假设这是因为我仍然需要注册函数?
    • 是的,我忘了你需要显式注册函数。通常应该通过 spark.sql.extensions 完成 - 我需要检查他们的代码
    • 也许有办法通过集群上的初始化脚本来做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    相关资源
    最近更新 更多