Redis 连接器¶
Redis 连接器允许查询存储在 Redis 中的实时数据。这可用于连接 Redis 和 Hive 等不同系统之间的数据。
每个 Redis 键/值对在 Presto 中显示为单行。可以使用表定义文件将行细分为单元格。
仅支持 Redis 字符串和哈希值类型;无法从 Presto 查询集合和 zset。
连接器需要 Redis 2.8.0 或更高版本。
配置¶
要配置 Redis 连接器,请创建一个目录属性文件 etc/catalog/redis.properties
,其内容如下,并根据需要替换属性
connector.name=redis
redis.table-names=schema1.table1,schema1.table2
redis.nodes=host:port
多个 Redis 服务器¶
您可以根据需要拥有任意数量的目录,因此如果您有其他 Redis 服务器,只需将另一个属性文件添加到 etc/catalog
中,并使用不同的名称(确保以 .properties
结尾)。
配置属性¶
以下是可用的配置属性
属性名称 |
描述 |
---|---|
|
目录提供的所有表的列表 |
|
表的默认模式名称 |
|
Redis 服务器的位置 |
|
用于扫描键的 Redis 参数 |
|
Redis 键具有模式名称:表名称:前缀 |
|
如果使用 redis.key-prefix-schema-table,则分隔模式名称和表名称的分隔符 |
|
包含表描述文件的目录 |
|
控制内部列是否为表模式的一部分 |
|
Redis 数据库索引 |
|
Redis 服务器密码 |
redis.table-names
¶
此目录提供的所有表的逗号分隔列表。表名可以是无限定的(简单名称),并将放入默认模式(见下文),或者可以使用模式名称进行限定(<schema-name>.<table-name>
)。
对于此处定义的每个表,可能存在表描述文件(见下文)。如果不存在表描述文件,则表将仅包含内部列(见下文)。
此属性是必需的;没有默认值,并且必须定义至少一个表。
redis.default-schema
¶
定义将包含所有未限定模式名称的定义表的模式。
此属性是可选的;默认值为 default
。
redis.nodes
¶
Redis 服务器的 hostname:port
对。
此属性是必需的;没有默认值。
不支持 Redis 集群。
redis.scan-count
¶
当连接器使用 SCAN 查找数据键时,Redis SCAN 命令的内部 COUNT 参数。此参数可用于调整 Redis 连接器的性能。
此属性是可选的;默认值为 100
。
redis.key-prefix-schema-table
¶
如果为 true,则仅扫描以 schema-name:table-name:
为前缀的键,并将过滤掉所有其他键。如果为 false,则扫描所有键。请注意,如果模式名称为默认模式,则要扫描的前缀仅为 table-name:
。
此属性是可选的;默认值为 false
。
redis.key-delimiter
¶
当 redis.key-prefix-schema-table
为 true
时,用于分隔 schema-name
和 table-name
的字符
此属性是可选的;默认值为 :
。
redis.table-description-dir
¶
引用 Presto 部署中包含一个或多个 JSON 文件(必须以 .json
结尾)的文件夹,这些 JSON 文件包含表描述文件。
此属性是可选的;默认值为 etc/redis
。
redis.hide-internal-columns
¶
除了在表描述文件中定义的数据列外,连接器还为每个表维护一些其他列。如果隐藏这些列,则它们仍然可以在查询中使用,但不会显示在 DESCRIBE <table-name>
或 SELECT *
中。
此属性是可选的;默认值为 true
。
redis.database-index
¶
要查询的 Redis 数据库。
此属性是可选的;默认值为 0
。
redis.password
¶
受密码保护的 Redis 服务器的密码。
此属性是可选的;默认值为 null
。
内部列¶
对于每个定义的表,连接器维护以下列
列名称 |
类型 |
描述 |
---|---|---|
|
VARCHAR |
Redis 键。 |
|
VARCHAR |
与键相对应的 Redis 值。 |
|
BIGINT |
键中的字节数。 |
|
BIGINT |
值中的字节数。 |
|
BOOLEAN |
如果解码器无法解码此行的键,则为真。如果为真,则应将从键映射的数据列视为无效。 |
|
BOOLEAN |
如果解码器无法解码此行的消息,则为真。如果为真,则应将从值映射的数据列视为无效。 |
对于没有表定义文件的表,_key_corrupt
和 _value_corrupt
列将始终为 false
。
表定义文件¶
使用 Redis 连接器,如果键/值字符串遵循特定格式,可以将 Redis 键/值对进一步细化为粒度单元格。此过程将定义新的列,这些列可以从 Presto 中进一步查询。
表定义文件包含表的 JSON 定义。文件名称可以是任意的,但必须以 .json
结尾。
{
"tableName": ...,
"schemaName": ...,
"key": {
"dataFormat": ...,
"fields": [
...
]
},
"value": {
"dataFormat": ...,
"fields": [
...
]
}
}
字段 |
必填 |
类型 |
描述 |
---|---|---|---|
|
必填 |
字符串 |
此文件定义的 Presto 表名。 |
|
可选 |
字符串 |
包含该表的模式。如果省略,则使用默认模式名称。 |
|
可选 |
JSON 对象 |
映射到值键的数据列的字段定义。 |
|
可选 |
JSON 对象 |
映射到值本身的数据列的字段定义。 |
请参阅 Kafka 连接器 页面以了解 dataFormat
以及各种可用解码器的描述。
除了上述 Kafka 类型之外,Redis 连接器还支持 hash
类型用于 value
字段,该字段表示存储在 Redis 哈希中的数据。
{
"tableName": ...,
"schemaName": ...,
"value": {
"dataFormat": "hash",
"fields": [
...
]
}
}