更新时间:2022-08-12 GMT+08:00

创建DLI表关联DCS

功能描述

使用CREATE TABLE命令创建DLI表并关联DCS上已有的Key。

前提条件

创建DLI表关联DCS之前需要创建跨源连接,绑定队列。

语法格式

  • 指定Key
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    CREATE TABLE [IF NOT EXISTS] TABLE_NAME(
        FIELDNAME1 FIELDTYPE1,
        FIELDNAME2 FIELDTYPE2)
      USING REDIS OPTIONS (
      'host'='xx',
      'port'='xx',
      'passwdauth' = 'xxx',
      'encryption' = 'true',
      'table'='namespace_in_redis:key_in_redis',
      'key.column'= 'FIELDNAME1'
    );
    
  • 通配key
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    CREATE TABLE [IF NOT EXISTS] TABLE_NAME(
        FIELDNAME1 FIELDTYPE1,
        FIELDNAME2 FIELDTYPE2)
      USING REDIS OPTIONS (
      'host'='xx',
      'port'='xx',
      'passwdauth' = 'xxx',
      'encryption' = 'true',
      'keys.pattern'='key*:*',
      'key.column'= 'FIELDNAME1'
    );
    

关键字

表1 CREATE TABLE参数描述

参数

描述

host

DCS的连接IP,需要先创建跨源连接。

创建增强型跨源连接后,使用DCS提供的"连接地址"。"连接地址"有多个时,选择其中一个即可。

说明:

访问DCS目前只支持增强型跨源。

port

DCS的连接端口,例如6379。

password

(已废弃)创建DCS集群时填写的密码。访问非安全Redis集群时不需要填写。

passwdauth

跨源密码认证名称。跨源认证信息创建方式请参考《数据湖探索用户指南》>《跨源认证》。

encryption

使用跨源密码认证时配置为“true”

table

对应Redis中的Key或Hash Key。

  • 插入redis数据时必填。
  • 查询redis数据时与“keys.pattern”参数二选一。

keys.pattern

使用正则表达式匹配多个Key或Hash Key。该参数仅用于查询时使用。查询redis数据时与“table”参数二选一。

key.column

非必填。用于指定schema中的某个字段作为Redis中key的标识。在插入数据时与参数“table”配合使用。

partitions.number

读取数据时,并发task数。

scan.count

每批次读取的数据记录数,默认为100。如果在读取过程中,redis集群中的CPU使用率还有提升空间,可以调大该参数。

iterator.grouping.size

每批次插入的数据记录数,默认为100。如果在插入过程中,redis集群中的CPU使用率还有提升空间,可以调大该参数。

timeout

连接redis的超时时间,单位ms,默认值2000(2秒超时)。

访问DCS时,不支持复杂类型数据(Array、Struct、Map等)。

可以考虑以下几种方式进行复杂类型数据处理:

  • 字段扁平化处理,将下一级的字段展开放在同一层Schema字段中。
  • 使用二进制方式进行写入与读取,并通过自定义函数进行编解码。

示例

  • 指定table
1
2
3
4
5
6
7
create table test_redis(name string, age int) using redis options(
  'host' = '192.168.4.199',
  'port' = '6379',
  'passwdauth' = 'xxx',
  'encryption' = 'true',
  'table' = 'person'
);
  • 通配table名
1
2
3
4
5
6
7
8
create table test_redis_keys_patten(id string, name string, age int) using redis options(
  'host' = '192.168.4.199',
  'port' = '6379',
  'passwdauth' = 'xxx',
  'encryption' = 'true',
  'keys.pattern' = 'p*:*',
  'key.column' = 'id'
);