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.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,則分隔 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

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 結尾)的資料夾,這些檔案包含表格描述檔案。

此屬性為選用;預設值為 etc/redis

redis.hide-internal-columns

除了資料表描述檔案中定義的資料欄位之外,連接器還會為每個資料表維護一些額外的欄位。如果這些欄位被隱藏,它們仍然可以在查詢中使用,但不會顯示在 DESCRIBE <資料表名稱>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

如果解碼器無法解碼此列的金鑰,則為 True。當為 true 時,從金鑰映射的資料欄位應被視為無效。

_value_corrupt

BOOLEAN

如果解碼器無法解碼此列的訊息,則為 True。當為 true 時,從值映射的資料欄位應被視為無效。

對於沒有資料表定義檔案的資料表,_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 連接器還支援 value 欄位的 hash 類型,該類型表示儲存在 Redis 雜湊中的資料。

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