Presto Redis Connector


在Presto中,允许Redis连接器查询存储在Redis中的实时数据。这可用于连接不同系统(如Redis和Hive)之间的数据。

每个Redis键/值对在Presto中显示为一行。可以使用表定义文件将行分解为单元格。

仅支持Redis字符串和哈希值类型;无法从Presto查询集和zset。

连接器需要Redis2.8.0或更高版本。

配置Redis连接器

要配置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键有schema-name:table-name:前缀

redis.key-delimiter

如果使用redis.key-prefix-schema-table,则分隔schema_name和table_name

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

hostname:portRedis服务器的配对。

此属性是必需的;没有默认值。

不支持Redis集群。

  • redis.scan-count

当连接器使用SCAN查找数据的键时,RedisSCAN命令的内部COUNT参数。此参数可用于调整Redis连接器的性能。

此属性是可选的;默认为100

  • redis.key-prefix-schema-table

如果为true,则仅schema-name:table-name:扫描以为前缀的键以查找表,而所有其他键将被过滤掉。如果为false,则扫描所有密钥。请注意,如果架构名称是默认架构,则要扫描的前缀仅为table-name:

此属性是可选的;默认为false

  • redis.key-delimiter

用于分隔schema-name和table-name何时的字符redis.key-prefix-schema-table是true

此属性是可选的.

  • redis.table-description-dir

引用Presto部署中的一个文件夹,其中包含一个或多个.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

key对应的Redis值。

_key_length

大数据

密钥中的字节数。

_value_length

大数据

值中的字节数。

_key_corrupt

布尔值

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

_value_corrupt

布尔值

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

对于没有表定义文件的表,_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连接器还支持表示存储在Redis哈希中的数据hash的value字段的类型。

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