Spatial Join
Last updated
Was this helpful?
Last updated
Was this helpful?
Glink 在 Flink 上扩展了三种类型的 spatial join,用以支持基于空间关系的 join。其中,spatial dimension join 一般用于流数据与不变数据(或缓慢变化数据)的 join,而 spatial window join 和 spatial interval join 用于双流数据的 join。
spatial dimension join 一般用于流数据与维度数据的 join,通过维度数据丰富流数据的内容。在 Glink 中维度数据可以有两种存在形式,一种是以广播状态的形式存在于 Flink 的内部状态中,另一种是存在于外部空间或时空数据库中。在 SpatialDataStream
API 中支持上述两种维度数据的存在形式,但是在 Spatial SQL API 中仅支持将维度数据存放在外部数据库中。
SpatialDataStream
API在 SpatialDataStream
API 中可通过如下方式快速实现 spatial dimension join,其中 TopologyType
用于指定基于何种空间关系进行 join,JoinFunction
用于给出流数据与维度数据的具体 join 方式,TypeHint
用于指示 join 后返回的数据类型。
spatial window join 支持双流数据的 spatial join,关于流数据上的 window join 可参考 。目前 Glink 的 spatial window join 仅支持 SpatialDataStream
API。
SpatialDataStream
APISpatialDataStream
API 提供了双流 spatial window join 函数,可通过如下方式调用。其中 WindowAssigner
用于定义窗口,其余参数与 spatial dimension join 相同。
SpatialDataStream
APISpatialDataStream
API 提供了双流 spatial interval join 函数,可通过如下方式调用。其中两个 Time
用于定义 join 的时间上下界,其余参数与 spatial dimension join 相同。
spatial interval join 同样用于双流 join,关于 interval join 的概念可参考 。目前 Glink 的 spatial interval join 仅支持 SpatialDataStream
API。