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": [
...
]
}
}