在Spark SQL作业中使用地理空间函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Spark SQL作业中使用地理空间函数相关的知识,希望对你有一定的参考价值。

参考技术A 地理空间数据又称为几何数据,可用来表示物体的位置、形态、大小分布等各方面的信息,是对现实世界中存在的具有定位意义的事物和现象的定量描述。通常,地理空间数据以点、线、面、体的形式表示。通过对地理空间数据的查询,可以获得被查询对象的面积、长度、空间关系等。

Point(点),LineString(线),Polygon(面),MultiPoint(多点),MultiLineString(多线), MultiPolygon(多面)

地理空间查询用于统计某空间范围内兴趣点的个数,检查两个区域是否重叠、两个地点之间的距离等。

返回与Geohash字符串geohash(base-32编码)对应的边界框的Geometry,其精度
为prec位。 有关GeoHashes的更多信息,请参阅Geohash。

Format: ST_GeomFromGeoHash(geohash: string, precision: int)
查询命令:
select ST_AsText(ST_GeomFromGeoHash('ssf17',25))

从给定的已知文本标记语言的二进制表示(WKB)创建Geometry。

Format: ST_GeomFromWKT (Wkt:string)
select
ST_AsText((ST_GeomFromWKT(ST_AsEWKB(ST_GeomFromText('MULTIPOLYGON (((30 20,
45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))')))))

根据给定的已知文本标记语言(WKT)创建Geometry。
ST_GeomFromText是ST_GeomFromWKT的别称

Format: ST_GeomFromWKT (Wkt:string)
select ST_AsText((ST_GeomFromText('POLYGON ((30 10, 40 40,
20 40, 10 20, 30 10))')))

返回具有给定坐标值的point。
Format: ST_Point (X:decimal, Y:decimal) Format: ST_Point (X:decimal, Y:decimal, Z:decimal)

如果a和b在2D中空间相交(即共享空间的任何部分),则返回true。 相当于NOT
st_disjoint(a,b)。
Format: ST_Intersects (A:geometry, B:geometry)

从MinX,MinY,MaxX,MaxY构建一个矩形。
Format: ST_PolygonFromEnvelope (MinX:decimal, MinY:decimal, MaxX:decimal, MaxY:decimal)

返回一个几何图形/地理位置,它表示与该几何图形/地理位置的距离小于或等于距离的所有点。
Format: ST_Buffer (A:geometry, buffer: Double)

经纬度需要转换成Decimal格式

图上需求是:根据中心点获取半径范围内的所有基站

图上需求是:根据矩形四个点获取矩形内的所有基站

图上需求是:根据自定义边框的多个点获取区域内的所有基站

ST_Centroid
SQL示例:

pyspark在spark sql中函数之间的使用范围

【中文标题】pyspark在spark sql中函数之间的使用范围【英文标题】:pyspark use range between function in spark sql 【发布时间】:2019-07-11 15:12:37 【问题描述】:

当我跑步时

spark.sql(''' 
        select client,avg(amount) over (partition by client
         order by my_timestamp
         range between interval 30 days preceding and current row) as moving_avg_amount
         from my_table''')

它有效。

但如果我想排除最后 X 天 - 它会失败。

... range between interval 30 days preceding and 12 days preceding ..
   or :
 ... range between interval 30 days preceding and interval 12 days preceding .. 

正确的语法是什么?

【问题讨论】:

【参考方案1】:

在Spark SQL Window over interval of between two specified time boundaries - between 3 hours and 2 hours ago 中建议范围间隔在 SparkSQL 中不能正常工作。

【讨论】:

感谢@RickyG,看来这是一个老错误了,不明白为什么它没有得到修复......

以上是关于在Spark SQL作业中使用地理空间函数的主要内容,如果未能解决你的问题,请参考以下文章

由于空间问题,Spark 作业失败

如何克服 AWS Glue 作业中的 Spark“设备上没有剩余空间”错误

Spark SQL 作业的 Spark 修复任务号

SQL Server 空间特征:.STDistance 它返回英里还是米?

如何使用 SQL 查询将值传递给具有空间/地理数据类型的存储过程

Spark SQL CTE在查询中忽略命名空间