• 沒有找到結果。

1.20.1 创建 DLI 表关联 DCS

功能描述

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

前提条件

创建DLI表关联DCS之前需要创建跨源连接,绑定队列。管理控制台操作请参考增强型

跨源连接。

语法格式

● 指定Key

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

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-53 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.nu

mber 读取数据时,并发task数。

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

iterator.grou

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

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

说明

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

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

● 字段扁平化处理,将下一级的字段展开放在同一层Schema字段中。

● 使用二进制方式进行写入与读取,并通过自定义函数进行编解码。

示例

● 指定table

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名

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' );

1.20.2 插入数据至 DCS 表

功能描述

INSERT INTO命令将DLI表中的数据插入到已关联的DCS Key中。

语法格式

● 将SELECT查询结果插入到表中:

INSERT INTO DLI_TABLE SELECT field1,field2...

[FROM DLI_TEST]

[WHERE where_condition]

[LIMIT num]

[GROUP BY field]

[ORDER BY field] ...;

● 将某条数据插入到表中:

INSERT INTO DLI_TABLE

VALUES values_row [, values_row ...];

关键字

SELECT对应关键字说明请参考SELECT基本语句。

参数说明

1-54 参数描述

参数 描述

DLI_TABLE 创建的DLI表名称,为插入数据的目的表。

DLI_TEST 为包含待查询数据的表。

field1,field2...,field 表“DLI_TEST”中的列值,需要匹配表“DLI_TABLE”的 列值和类型。

where_condition 查询过滤条件。

num 对查询结果进行限制,num参数仅支持INT类型。

values_row 想要插入到表中的值,列与列之间用逗号分隔。

注意事项

● DLI表必须已经存在。

● DLI表在创建时需要指定Schema信息。

● 如果在建表时指定“key.column”,则在Redis中会以指定字段的值作为Redis Key名称的一部分。例如:

create table test_redis(name string, age int) using redis options(

'host' = '192.168.4.199', 'port' = '6379', 'password' = '******',

'table' = 'test_with_key_column', 'key.column' = 'name'

);insert into test_redis values("James", 35), ("Michael", 22);

在redis中将会有2个名为test_with_key_column:James和 test_with_key_column:Michael的表:

● 如果在建表时没有指定“key.column”,则在Redis中的key name将会使用 uuid。例如:

create table test_redis(name string, age int) using redis options(

'host' = '192.168.7.238', 'port' = '6379', 'password' = '******',

'table' = 'test_without_key_column'

);insert into test_redis values("James", 35), ("Michael", 22);

在redis中将会有2个以“test_without_key_column:uuid”命名的表:

示例

INSERT INTO test_redis

VALUES("James", 35), ("Michael", 22);

1.20.3 查询 DCS 表

SELECT命令用于查询DCS表中的数据。

语法格式

SELECT * FROM table_name LIMIT number;

关键字

LIMIT:对查询结果进行限制,number参数仅支持INT类型。

示例

查询表test_redis中的数据。

SELECT * FROM test_redis limit 100;