Redis 連接器¶
Redis 連接器允許查詢儲存在 Redis 中的即時資料。這可以用於連接不同系統(如 Redis 和 Hive)之間的資料。
每個 Redis 鍵/值對在 Presto 中都會顯示為單獨的一行。可以使用表格定義檔案將行分解為儲存格。
僅支援 Redis 字串和雜湊值類型;無法從 Presto 查詢集合和排序集合。
此連接器需要 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,則分隔 schema_name 和 table_name 的分隔符 |
|
包含表格描述檔案的目錄 |
|
控制內部欄位是否為表格綱要的一部分 |
|
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
結尾)的資料夾,這些檔案包含表格描述檔案。
此屬性為選用;預設值為 etc/redis
。
redis.hide-internal-columns
¶
除了資料表描述檔案中定義的資料欄位之外,連接器還會為每個資料表維護一些額外的欄位。如果這些欄位被隱藏,它們仍然可以在查詢中使用,但不會顯示在 DESCRIBE <資料表名稱>
或 SELECT *
中。
此屬性為選填,預設值為 true
。
redis.database-index
¶
要查詢的 Redis 資料庫。
此屬性為選填,預設值為 0
。
redis.password
¶
受密碼保護的 Redis 伺服器的密碼。
此屬性為選填,預設值為 null
。
內部欄位¶
對於每個定義的資料表,連接器會維護以下欄位
欄位名稱 |
類型 |
描述 |
---|---|---|
|
VARCHAR |
Redis 金鑰。 |
|
VARCHAR |
對應金鑰的 Redis 值。 |
|
BIGINT |
金鑰中的位元組數。 |
|
BIGINT |
值中的位元組數。 |
|
BOOLEAN |
如果解碼器無法解碼此列的金鑰,則為 True。當為 true 時,從金鑰映射的資料欄位應被視為無效。 |
|
BOOLEAN |
如果解碼器無法解碼此列的訊息,則為 True。當為 true 時,從值映射的資料欄位應被視為無效。 |
對於沒有資料表定義檔案的資料表,_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 連接器還支援 value
欄位的 hash
類型,該類型表示儲存在 Redis 雜湊中的資料。
{
"tableName": ...,
"schemaName": ...,
"value": {
"dataFormat": "hash",
"fields": [
...
]
}
}