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 サーバーの場所 | 
| 
 | キーのスキャン用の Redis パラメータ | 
| 
 | Redis キーには schema-name:table-name: プレフィックスが付きます | 
| 
 | redis.key-prefix-schema-table が使用されている場合、スキーマ名とテーブル名を区切るデリミタ | 
| 
 | テーブル定義ファイルを含むディレクトリ | 
| 
 | 内部カラムをテーブル スキーマに含めるかどうかを制御します | 
| 
 | Redis データベース インデックス | 
| 
 | 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-table が true の場合、schema-name と table-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 です。
内部カラム¶
定義されている各テーブルについて、コネクタは次のカラムを保持します。
| カラム名 | 型 | 説明 | 
|---|---|---|
| 
 | 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 オブジェクト | 値自体にマッピングされたデータカラムのフィールド定義。 | 
`dataFormat` およびさまざまな利用可能なデコーダの説明については、Kafka コネクタのページを参照してください。
上記の Kafka タイプに加えて、Redis コネクタは、Redis ハッシュに格納されているデータを表す `value` フィールドの `hash` タイプをサポートしています。
{
    "tableName": ...,
    "schemaName": ...,
    "value": {
        "dataFormat": "hash",
        "fields": [
            ...
       ]
    }
}