使用方式

SedonaSQL 支持多种参数。修改它们的取值有以下几种方式:

  1. 通过 SparkConf 设置:
sparkSession = SparkSession.builder().
      config("spark.serializer","org.apache.spark.serializer.KryoSerializer").
      config("spark.kryo.registrator", "org.apache.sedona.core.serde.SedonaKryoRegistrator").
      config("sedona.global.index","true")
      master("local[*]").appName("mySedonaSQLdemo").getOrCreate()
  1. 查看当前的 SedonaSQL 配置:
val sedonaConf = new SedonaConf(sparkSession.conf)
println(sedonaConf)
  1. Sedona 参数可以在运行时动态修改:
sparkSession.conf.set("sedona.global.index","false")

此外,你也可以在参数名前添加 spark 前缀,例如:

sparkSession.conf.set("spark.sedona.global.index","false")

不过,所有通过 spark 前缀设置的参数都会被 Spark 所识别,这意味着你可以提前通过 spark-defaults.conf 或 Spark on Kubernetes 的配置来设定这些参数。

如果同一个参数同时通过 sedonaspark.sedona 两种前缀进行设置,则 sedona 前缀设置的值会覆盖 spark.sedona 前缀设置的值。

通用参数

参数说明默认值可选值
sedona.global.index是否启用空间索引(目前仅支持 SQL 范围连接与 SQL 距离连接)truetrue, false
sedona.global.indextype空间索引类型,仅在 sedona.global.index 为 true 时生效rtreertree, quadtree
spark.sedona.enableParserExtension启用解析器扩展,用于在 SQL DDL 语句中解析 GEOMETRY 数据类型truetrue, false

连接(Join)相关参数

参数说明默认值可选值
sedona.join.autoBroadcastJoinThreshold执行连接时,将被广播到所有工作节点的表的最大字节大小。设为 -1 可禁用自动广播。spark.sql.autoBroadcastJoinThreshold 相同带有字节后缀的整数,例如 10MB512KB
sedona.join.gridtype连接查询使用的空间分区网格类型kdbtreequadtree, kdbtree
spark.sedona.join.knn.includeTieBreakersKNN 连接结果是否包含所有并列项,可能返回多于 k 个结果falsetrue, false
sedona.join.indexbuildside(高级) Sedona 在哪一侧构建空间索引leftleft, right
sedona.join.numpartition(高级) 连接查询双方的分区数-1(使用现有分区数)任意整数
sedona.join.spatitionside(高级) 空间分区阶段的主导侧leftleft, right
sedona.join.optimizationmode(高级) Sedona 何时优化空间连接 SQL 查询nonequiall(始终优化,包括等值连接),none(禁用优化),nonequi(仅优化非等值连接)

CRS 转换参数

参数说明默认值可选值起始版本
spark.sedona.crs.geotools控制 ST_Transform 中 CRS 转换所使用的库rasternone(全部使用 proj4sedona),raster(矢量使用 proj4sedona,栅格使用 GeoTools),all(全部使用 GeoTools —— 旧版行为)v1.9.0
spark.sedona.crs.url.baseCRS 定义服务器的基础 URL,用于通过 HTTP 解析权威机构代码(如 EPSG)。设置后,ST_Transform 会先查询该 URL 提供者,再回退到内置定义。(空 —— 禁用)例如 https://crs.example.comv1.9.0
spark.sedona.crs.url.pathTemplate附加在 spark.sedona.crs.url.base 之后的 URL 路径模板。占位符 {authority}{code} 会在运行时被替换。/{authority}/{code}.json例如 /epsg/{code}.jsonv1.9.0
spark.sedona.crs.url.formatURL 提供者返回的 CRS 定义格式projjsonprojjsonprojwkt1(OGC WKT1)、wkt2(ISO 19162 WKT2)v1.9.0