配置流引擎的时空宽表连接器

在使用流引擎处理计算任务时,Lindorm支持将宽表作为维表或结果表使用,您可以通过宽表连接器关联在宽表引擎中创建的结果表,并设置相关参数开启时空内存索引。本文介绍通过连接器配置构建时空内存索引的方法。

背景信息

在流引擎中通过Flink SQL提交计算任务时,如果想要使用时空内存索引,可以在CREATE TABLE语句中配置时空内存索引相关的连接器(Connector)参数。

在流引擎中使用时空内存索引

CREATE TABLE lindorm_table (
  c1 INT,
  c2 VARCHAR,
  c3 GEOMETRY, 
  PRIMARY KEY (c1, c2) NOT ENFORCED -- 主键必须与在宽表引擎中创建的结果表的主键一致
) WITH (
  'connector'='lindorm',
  'seedServer'='ld-bp17pwu1541ia****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020',
  'userName'='yourUser',
  'password'='yourPassword',
  'tableName'='yourTableName',
  'namespace'='yourNamespace',
  'geomHint'='c3:st_contains',
  'geomIndex'='true',
  'cacheTTLMs'='1800000'
);-- WITH中为连接器相关参数
说明

连接器参数说明

您可以通过WITH关键字指定连接器,并在连接器中配置常用参数和时空参数。

常用参数

常用参数为关联Lindorm结果表需要设置的参数。

参数

默认值

是否必填

说明

seedServer

宽表引擎的HBase Java API连接地址。如何获取,请参见查看宽表引擎连接地址

namespace

宽表所在的命名空间。

userName

用户名。

password

密码。

tableName

宽表名。

bufferSize

5000

攒批写入数据的行数。

flushIntervalMs

2000

写入数据时系统执行flush操作的时间间隔。单位为毫秒(ms)。

如果写入的数据量很少,则系统会按该时间间隔执行flush操作。

说明

不同业务下写入数据量多少的标准不同。

columnFamily

f

列簇名。

说明

在流引擎中使用宽表时,是否配置columnFamily取决于该表的创建方式:

  • 通过HBase Java API创建:需要配置。

  • 通过Lindorm SQL创建:无需配置。

时空参数

重要

如果需要构建时空内存索引,以下参数必填。

参数

默认值

说明

cacheTTLMs

-1

数据缓存(Cache)的过期时间。单位为毫秒,默认值为-1,表示不产生数据缓存。数据缓存过期之后,执行下一次查询时会重建时空索引。

geomHint

指定的时空Lookup Join查询,格式为<columnName>:<queryFunction>,例如 fence:st_contains。在执行Lookup Join查询时,Join条件中的时空等式将被替换为指定的时空查询。例如,fence=ST_MakePoint(x,y))将被替换为指定的时空查询ST_Contains(fence, ST_MakePoint(x,y))。

queryFunction支持的函数如下:

ST_Contains

ST_Within

ST_DWithin

ST_DWithinSphere

ST_Intersects

ST_Overlaps

ST_Equals

geomIndex

指定创建时空索引的列,该表的时空LookupJoin查询将自动通过内存索引加速。

当前仅支持单表单列创建索引。支持通过内存索引加速的函数有:

ST_Contains

ST_Within

ST_DWithin

ST_DWithinSphere

ST_Intersects

ST_Overlaps

ST_Equals

geomIndex必须与geomHintcacheTTLMs参数搭配使用,且cacheTTLMs的值必须大于0。