在使用流引擎处理计算任务时,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中为连接器相关参数
CREATE TABLE的详细介绍,请参见CREATE TABLE语法说明。
时空内存索引的详细介绍及使用限制,请参见时空内存索引。
连接器参数说明
您可以通过WITH
关键字指定连接器,并在连接器中配置常用参数和时空参数。
常用参数
常用参数为关联Lindorm结果表需要设置的参数。
参数 | 默认值 | 是否必填 | 说明 |
seedServer | 无 | 是 | 宽表引擎的HBase Java API连接地址。如何获取,请参见查看宽表引擎连接地址。 |
namespace | 无 | 是 | 宽表所在的命名空间。 |
userName | 无 | 是 | 用户名。 |
password | 无 | 是 | 密码。 |
tableName | 无 | 是 | 宽表名。 |
bufferSize | 5000 | 否 | 攒批写入数据的行数。 |
flushIntervalMs | 2000 | 否 | 写入数据时系统执行 如果写入的数据量很少,则系统会按该时间间隔执行 说明 不同业务下写入数据量多少的标准不同。 |
columnFamily | f | 否 | 列簇名。 说明 在流引擎中使用宽表时,是否配置columnFamily取决于该表的创建方式:
|
时空参数
如果需要构建时空内存索引,以下参数必填。
参数 | 默认值 | 说明 |
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必须与geomHint和cacheTTLMs参数搭配使用,且cacheTTLMs的值必须大于0。 |