尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Presto Redis Connector 官方文档:查询 Redis 实时数据、配置参数与表定义文件全指南

Presto Redis Connector 官方文档:查询 Redis 实时数据、配置参数与表定义文件全指南 大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载简介Redis Connector 允许 Presto 直接查询存储在 Redis 中的实时数据live data常用于将 Redis 与 Hive 等其他系统的数据进行关联join分析。Redis 中的每个 key/value 对在 Presto 中被呈现为一行数据通过表定义文件table definition files可以进一步将这些行拆分为更细粒度的单元格cells进行查询。重要限制当前连接器仅支持 Redis 的string和hash两种值类型set 和 zset 无法从 Presto 查询尽管源码中RedisDataType枚举包含SET、ZSET但在实际查询中仅支持 STRING 与 HASH 两种值数据格式参见 RedisDataType.java。 该连接器要求Redis 2.8.0 或更高版本。配置要配置 Redis 连接器请在etc/catalog/目录下创建 catalog properties 文件redis.properties内容如下按需替换属性值connector.nameredis redis.table-namesschema1.table1,schema1.table2 redis.nodeshost:port若 Presto 部署在本地开发模式目录结构通常为presto-root/etc/catalog/redis.properties生产环境通常位于presto-server/etc/catalog/下。仓库中的示例配置位于 presto-main/etc/catalog/redis.properties。多个 Redis 服务器你可以根据需要配置任意数量的 catalog。如果有额外的 Redis 服务器只需在etc/catalog中添加另一个以.properties结尾的 properties 文件即可例如redis2.properties、redis3.properties。配置属性属性名描述redis.table-names该 catalog 提供的所有表列表redis.default-schema表的默认 schema 名称redis.nodesRedis 服务器的位置redis.scan-countRedis SCAN 命令的参数用于扫描 keysredis.key-prefix-schema-tableRedis 的 key 是否带有schema-name:table-name:前缀redis.key-delimiter当redis.key-prefix-schema-table启用时用于分隔 schema_name 和 table_name 的分隔符redis.table-description-dir包含表描述文件的目录redis.hide-internal-columns是否将内部列作为表 schema 的一部分redis.database-indexRedis 数据库索引redis.passwordRedis 服务器密码redis.userRedis 服务器用户名redis.tls.enabled是否启用 TLS 安全默认为falseredis.tls.truststore-pathTLS 证书文件的路径case-sensitive-name-matching是否启用连接器的 schema、表和列名的区分大小写标识符支持。禁用时名称使用小写规范化进行不区分大小写的匹配。默认为falseredis.table-names以逗号分隔的此 catalog 提供的所有表列表。表名可以是非限定的简单名称将放入默认 schema见下文也可以是限定的schema-name.table-name格式。对于此处定义的每个表可能存在一个表描述文件见下文。如果没有表描述文件则该表将仅包含内部列见下文。此属性是必需的没有默认值且至少必须定义一个表。从源码看该属性通过Splitter.on(,).omitEmptyStrings().trimResults()解析逗号分隔且自动去除空白见 RedisConnectorConfig.java。redis.default-schema定义包含所有未限定 schema 名称的表的 schema。此属性可选默认值为default。redis.nodesRedis 服务器的hostname:port对。此属性是必需的没有默认值。注意Redis 集群cluster不受支持。从源码看redis.nodes也支持逗号分隔的多个节点解析时若省略端口则自动补默认端口 6379withDefaultPort(REDIS_DEFAULT_PORT)其中REDIS_DEFAULT_PORT 6379见 RedisConnectorConfig.java。redis.scan-count当连接器使用 SCAN 查找数据时Redis SCAN 命令的内部 COUNT 参数。该参数可用于调整 Redis 连接器的性能。此属性可选默认值为100。从源码看该值用于构建ScanParams并调用scanParams.count(...)见 RedisRecordCursor.java。redis.key-prefix-schema-table如果为true则只扫描带有schema-name:table-name:前缀的 keys用于表其他所有 keys 将被过滤掉。如果为false则扫描所有 keys。注意如果 schema 名称是默认 schema则扫描的前缀仅为table-name:。此属性可选默认值为false。实现细节在 RedisRecordCursor.java 中当启用该选项时ScanParams.match(...)会被设置为schemaName delimiter tableName delimiter *其中若 schema 为default则省略 schema 前缀。redis.key-delimiter当redis.key-prefix-schema-table为true时用于分隔schema-name和table-name的字符。此属性可选默认值为:。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。从源码看redis.password被标注为ConfigSecuritySensitive在配置文件中属于敏感项见 RedisConnectorConfig.java。redis.userRedis 服务器用户名。注意文档中标注此属性为 required 且无默认值但源码测试 TestRedisConnectorConfig.java 显示其默认值为null即未设置时连接不携带用户名兼容无需认证的 Redis。实际使用时仅当 Redis 启用了 ACL 用户认证时才需要配置。redis.tls.enabled启用或禁用 TLS 安全。此属性可选默认值为false。redis.tls.truststore-pathTLS 证书文件的路径。如果redis.tls.enabled设置为true则此属性是必需的。实现细节在 RedisJedisManager.java 中启用 TLS 时会加载 X.509 证书到KeyStore构建SSLContext并在创建JedisPool时传入 TLS socket factory若未配置 truststore 路径则跳过 truststore 加载连接将依赖系统默认信任链具体取决于环境。另外注意源码中还提供了redis.connect-timeout属性默认2000ms用于控制 Redis 连接超时文档未列出但可配置使用。内部列Internal Columns对于每个已定义的表连接器维护以下列列名类型描述_keyVARCHARRedis key。_valueVARCHAR与该 key 对应的 Redis value。_key_lengthBIGINTkey 的字节数。_value_lengthBIGINTvalue 的字节数。_key_corruptBOOLEAN如果解码器无法解码该行的 key则为 true。当为 true 时从 key 映射的数据列应视为无效。_value_corruptBOOLEAN如果解码器无法解码该行的消息则为 true。当为 true 时从 value 映射的数据列应视为无效。对于没有表定义文件的表_key_corrupt和_value_corrupt列将始终为false。源码依据这些内部列定义在 RedisInternalFieldDescription.java 枚举中。各列的实际赋值逻辑见 RedisRecordCursor.java_key/_value以 UTF-8 字节形式提供_key_length/_value_length为字节长度_key_corrupt/_value_corrupt为解码是否失败的取反值。表定义文件Table Definition Files使用 Redis 连接器可以在 key/value 字符串遵循特定格式的前提下进一步将 Redis key/value 对拆分为更细粒度的单元格。此过程将定义新的列可供 Presto 进一步查询。表定义文件是表的 JSON 定义。文件名可以是任意的但必须以.json结尾。{ tableName: ..., schemaName: ..., key: { dataFormat: ..., fields: [ ... ] }, value: { dataFormat: ..., fields: [ ... ] } }字段必填类型描述tableName必填string由此文件定义的 Presto 表名。schemaName可选string包含该表的 schema。如果省略则使用默认 schema 名称。key可选JSON 对象映射到 value key 的数据列的字段定义。value可选JSON 对象映射到 value 本身的数据列的字段定义。源码依据JSON 解析模型对应 RedisTableDescription.java其中tableName为必填非空校验字段组 RedisTableFieldGroup.java 包含dataFormat、name、fields单个字段 RedisTableFieldDescription.java 支持name、type、mapping、comment、dataFormat、formatHint、hidden等属性。关于dataFormat的描述以及各种可用的解码器请参阅 Kafka 连接器页面该文档介绍了raw、csv、json、avro等解码器及其dataFormat取值、mapping和formatHint的用法。除了上述 Kafka 类型外Redis 连接器还支持value字段的hash类型用于表示存储在 Redis hash 中的数据{ tableName: ..., schemaName: ..., value: { dataFormat: hash, fields: [ ... ] } }源码依据hash 解码器实现在 HashRedisRowDecoder.java其NAME hash。解码时通过columnHandle.getMapping()作为 hash 字段名从dataMap即hgetAll的结果中取值。取值逻辑见 RedisRecordCursor.javaSTRING 类型调用jedis.get(key)HASH 类型调用jedis.hgetAll(key)。查询示例在完成上述配置后你可以像查询普通表一样查询 Redis 数据。例如-- 查看表结构内部列默认隐藏 DESCRIBE schema1.table1; -- 查询全部数据返回所有数据列 SELECT * FROM schema1.table1; -- 显式查询内部列即使被隐藏也可用 SELECT _key, _value, _key_length, _value_length FROM schema1.table1; -- 过滤损坏的行 SELECT * FROM schema1.table1 WHERE _value_corrupt false; -- 与 Hive 表关联 SELECT r.*, h.* FROM schema1.table1 r JOIN hive.default.hive_table h ON h.id r.id;说明内部列的可见性受redis.hide-internal-columns控制默认true即隐藏但可用。测试与验证仓库中提供了完整的 Redis 连接器集成测试可用于验证配置与功能TestRedisConnectorConfig.java —— 验证所有配置属性的默认值与显式映射。TestRedisIntegrationSmokeTest.java —— STRING 类型数据的冒烟测试。TestRedisDistributedHash.java —— HASH 类型数据的分布式测试。TestRedisIntegrationMixedCase.java —— 大小写混合标识符测试对应case-sensitive-name-matching。TestRedisDistributed.java、TestMinimalFunctionality.java —— 其他集成与最小功能验证。这些测试使用EmbeddedRedisEmbeddedRedis.java启动嵌入式 Redis 实例覆盖了从配置解析到分布式查询的完整链路。总结Redis 连接器将 Redis 的每个 key/value 对映射为 Presto 中的一行支持 string 与 hash 两种值类型要求 Redis 2.8.0不支持 Redis 集群。核心配置集中在etc/catalog/redis.propertiesredis.table-names与redis.nodes为必填其余属性均有合理默认值。通过 JSON 表定义文件默认目录etc/redis/可将 key/value 拆分为细粒度列hash 类型使用dataFormat: hash。每个表自动附带_key、_value、_key_length、_value_length、_key_corrupt、_value_corrupt六个内部列默认隐藏但可显式查询。仓库源码presto-redis 模块与测试用例为以上所有行为提供了直接证据可作为深入研读与排障的参考。赞分享大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载相关推荐Presto MongoDB Connector 实战指南从 Catalog 配置到表定义与 ObjectId 查询Presto MongoDB Connector 实战指南从 Catalog 配置到表定义与 ObjectId 查询 本文以 Presto 仓库中 Mongo大数据数据库后端Presto 查询 ScyllaDBScyllaDB Connector 配置与实践指南Presto 查询 ScyllaDBScyllaDB Connector 配置与实践指南 本文以 Presto 开源仓库中的 ScyllaDB Connect大数据数据库后端Presto Elasticsearch Connector 完全指南配置、类型映射、全文检索与 Pass-through 查询实战Presto Elasticsearch Connector 完全指南配置、类型映射、全文检索与 Pass through 查询实战 导读 本指南基于 Pre大数据数据库后端上一篇告别混乱终端Windows Terminal多实例管理完全指南下一篇Godot Engine VR开发终极指南从零构建沉浸式虚拟现实体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表