在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服务器密码
|
此目录提供的所有表的逗号分隔列表。表名可以是未限定的(简单名称),并将被放入默认模式(见下文)或使用模式名称(<schema-name>.<table-name>)进行限定。
对于此处定义的每个表,可能存在一个表描述文件(见下文)。如果不存在表描述文件,则该表将仅包含内部列(见下文)。
此属性是必需的;没有默认值,必须至少定义一张表。
定义架构,该架构将包含所有在没有限定架构名称的情况下定义的表。
此属性是可选的;默认为default。
hostname:portRedis服务器的配对。
此属性是必需的;没有默认值。
不支持Redis集群。
当连接器使用SCAN查找数据的键时,RedisSCAN命令的内部COUNT参数。此参数可用于调整Redis连接器的性能。
此属性是可选的;默认为100。
- redis.key-prefix-schema-table
如果为true,则仅schema-name:table-name:扫描以为前缀的键以查找表,而所有其他键将被过滤掉。如果为false,则扫描所有密钥。请注意,如果架构名称是默认架构,则要扫描的前缀仅为table-name:。
此属性是可选的;默认为false。
用于分隔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数据库。
此属性是可选的;默认为0。
受密码保护的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":[
...
]
}
}