Redis コネクタ

Redis コネクタを使用すると、Redis に格納されているライブ データをクエリできます。これは、Redis と Hive など、異なるシステム間のデータを結合するために使用できます。

Redis の各キーと値のペアは、Presto では 1 つの行として表されます。テーブル定義ファイルを使用することで、行をセルに分割できます。

Redis の文字列型とハッシュ型の値のみがサポートされています。セット型と ZSet 型は、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 サーバーがある場合は、別の名前(.properties で終わるようにする)で etc/catalog に別のプロパティ ファイルを追加するだけです。

設定プロパティ

以下の設定プロパティが使用可能です。

プロパティ名

説明

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 が使用されている場合、スキーマ名とテーブル名を区切るデリミタ

redis.table-description-dir

テーブル定義ファイルを含むディレクトリ

redis.hide-internal-columns

内部カラムをテーブル スキーマに含めるかどうかを制御します

redis.database-index

Redis データベース インデックス

redis.password

Redis サーバーのパスワード

redis.table-names

このカタログによって提供されるすべてのテーブルのカンマ区切りリスト。テーブル名は、修飾されていない(単純な名前)場合、デフォルト スキーマ(下記参照)に配置されます。または、スキーマ名で修飾されます(<スキーマ名>.<テーブル名>)。

ここで定義されている各テーブルには、テーブル定義ファイル(下記参照)が存在する場合があります。テーブル定義ファイルが存在しない場合、テーブルには内部カラム(下記参照)のみが含まれます。

このプロパティは必須です。デフォルトはなく、少なくとも 1 つのテーブルを定義する必要があります。

redis.default-schema

修飾スキーマ名なしで定義されたすべてのテーブルを含むスキーマを定義します。

このプロパティはオプションです。デフォルトは default です。

redis.nodes

Redis サーバーの ホスト名:ポート ペア。

このプロパティは必須です。デフォルトはありません。

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

テーブル定義ファイルを含む 1 つ以上の JSON ファイル(.json で終わる必要がある)を保持する、Presto デプロイメント内のフォルダを参照します。

このプロパティはオプションです。デフォルトは 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 オブジェクト

値自体にマッピングされたデータカラムのフィールド定義。

`dataFormat` およびさまざまな利用可能なデコーダの説明については、Kafka コネクタのページを参照してください。

上記の Kafka タイプに加えて、Redis コネクタは、Redis ハッシュに格納されているデータを表す `value` フィールドの `hash` タイプをサポートしています。

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