Azure Databricks:使用 Spark 进行地理空间查询 SQL
Azure Databricks : Geospatial queries with Spark SQL
目前我有:
- Databricks table 包含设备、位置和时间戳;
- Web Api 在 minLat、minLon、maxLat、maxLon 中接收请求并创建一个 sql 查询,lat 在 minLat 和 maxLat 之间,lon 在 minLon 和 maxLon 之间;
- 将接收从 Web API 生成的查询并在数据块中创建与集群的 JDBC 连接以执行查询的函数;
我想看看是否可以使用一些空间库改进“minLat 和 maxLat 之间的纬度以及 minLon 和 maxLon 之间的经度”。我检查过的一个这样的例子是 GeoSpark。这里的问题是,当前版本的 GeoSpark(和 GeoSParkSql)仅适用于 spark v2.3,databricks 中不再支持运行时适用于该版本。
有什么想法吗?
注意:我暂时不能偏离SQL。
GeoSpark 以 Apache Sedona project 的身份加入了 Apache 基金会,大约 2 周前发布了支持 Spark 3.0 的版本,因此您可以像 GeoSpark 一样使用它。
P.S。为了自动注册函数,我们可以创建这样的东西,编译成 jar,然后用 --conf spark.sql.extensions=...SomeExtensions
:
配置 Spark
class SomeExtensions extends (SparkSessionExtensions => Unit) {
def apply(e: SparkSessionExtensions): Unit = {
e.injectCheckRule(spark => {
// Setup something
_ => Unit
})
}
}
目前我有:
- Databricks table 包含设备、位置和时间戳;
- Web Api 在 minLat、minLon、maxLat、maxLon 中接收请求并创建一个 sql 查询,lat 在 minLat 和 maxLat 之间,lon 在 minLon 和 maxLon 之间;
- 将接收从 Web API 生成的查询并在数据块中创建与集群的 JDBC 连接以执行查询的函数;
我想看看是否可以使用一些空间库改进“minLat 和 maxLat 之间的纬度以及 minLon 和 maxLon 之间的经度”。我检查过的一个这样的例子是 GeoSpark。这里的问题是,当前版本的 GeoSpark(和 GeoSParkSql)仅适用于 spark v2.3,databricks 中不再支持运行时适用于该版本。
有什么想法吗?
注意:我暂时不能偏离SQL。
GeoSpark 以 Apache Sedona project 的身份加入了 Apache 基金会,大约 2 周前发布了支持 Spark 3.0 的版本,因此您可以像 GeoSpark 一样使用它。
P.S。为了自动注册函数,我们可以创建这样的东西,编译成 jar,然后用 --conf spark.sql.extensions=...SomeExtensions
:
class SomeExtensions extends (SparkSessionExtensions => Unit) {
def apply(e: SparkSessionExtensions): Unit = {
e.injectCheckRule(spark => {
// Setup something
_ => Unit
})
}
}