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.table-names

目录提供的所有表的列表

redis.default-schema

表的默认模式名称

redis.nodes

Redis 服务器的位置

redis.scan-count

用于扫描键的 Redis 参数

redis.key-prefix-schema-table

Redis 键具有模式名称:表名称:前缀

redis.key-delimiter

如果使用 redis.key-prefix-schema-table,则分隔模式名称和表名称的分隔符

redis.table-description-dir

包含表描述文件的目录

redis.hide-internal-columns

控制内部列是否为表模式的一部分

redis.database-index

Redis 数据库索引

redis.password

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-tabletrue 时,用于分隔 schema-nametable-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

内部列

对于每个定义的表,连接器维护以下列

列名称

类型

描述

_key

VARCHAR

Redis 键。

_value

VARCHAR

与键相对应的 Redis 值。

_key_length

BIGINT

键中的字节数。

_value_length

BIGINT

值中的字节数。

_key_corrupt

BOOLEAN

如果解码器无法解码此行的键,则为真。如果为真,则应将从键映射的数据列视为无效。

_value_corrupt

BOOLEAN

如果解码器无法解码此行的消息,则为真。如果为真,则应将从值映射的数据列视为无效。

对于没有表定义文件的表,_key_corrupt_value_corrupt 列将始终为 false

表定义文件

使用 Redis 连接器,如果键/值字符串遵循特定格式,可以将 Redis 键/值对进一步细化为粒度单元格。此过程将定义新的列,这些列可以从 Presto 中进一步查询。

表定义文件包含表的 JSON 定义。文件名称可以是任意的,但必须以 .json 结尾。

{
    "tableName": ...,
    "schemaName": ...,
    "key": {
        "dataFormat": ...,
        "fields": [
            ...
        ]
    },
    "value": {
        "dataFormat": ...,
        "fields": [
            ...
       ]
    }
}

字段

必填

类型

描述

tableName

必填

字符串

此文件定义的 Presto 表名。

schemaName

可选

字符串

包含该表的模式。如果省略,则使用默认模式名称。

key

可选

JSON 对象

映射到值键的数据列的字段定义。

value

可选

JSON 对象

映射到值本身的数据列的字段定义。

请参阅 Kafka 连接器 页面以了解 dataFormat 以及各种可用解码器的描述。

除了上述 Kafka 类型之外,Redis 连接器还支持 hash 类型用于 value 字段,该字段表示存储在 Redis 哈希中的数据。

{
    "tableName": ...,
    "schemaName": ...,
    "value": {
        "dataFormat": "hash",
        "fields": [
            ...
       ]
    }
}