メインコンテンツへスキップ
メインコンテンツへスキップ

s3Cluster テーブル関数

これは s3 テーブル関数の拡張です。

指定したクラスタ内の多数のノードで、Amazon S3 および Google Cloud Storage 上のファイルを並列処理できます。イニシエーター側では、クラスタ内のすべてのノードへの接続を確立し、S3 ファイルパス中のアスタリスクを展開し、各ファイルを動的に割り当てます。ワーカーノード側では、処理すべき次のタスクをイニシエーターに問い合わせて、そのタスクを処理します。すべてのタスクが完了するまで、これを繰り返します。

構文

s3Cluster(cluster_name, url[, NOSIGN | access_key_id, secret_access_key,[session_token]][, format][, structure][, compression_method][, headers][, extra_credentials])
s3Cluster(cluster_name, named_collection[, option=value [,..]])

引数

ArgumentDescription
cluster_nameリモートおよびローカルサーバーへのアドレスと接続パラメータのセットを構築するために使用されるクラスタ名。
urlファイルまたは複数ファイルへのパス。読み取り専用モードで次のワイルドカードをサポートします: *, **, ?, {'abc','def'} および {N..M}。ここで N, M は数値、abc, def は文字列です。詳細は Wildcards In Path を参照してください。
NOSIGN資格情報の代わりにこのキーワードが指定された場合、すべてのリクエストは署名されません。
access_key_idsecret_access_key指定されたエンドポイントで使用する資格情報を表すキー。省略可能。
session_token指定されたキーとともに使用するセッショントークン。キーを指定する場合は省略可能。
formatファイルの format
structureテーブルの構造。形式: 'column1_name column1_type, column2_name column2_type, ...'
compression_method省略可能なパラメータ。サポートされる値: none, gzip または gz, brotli または br, xz または LZMA, zstd または zst。デフォルトでは、ファイル拡張子により圧縮方式を自動検出します。
headers省略可能なパラメータ。S3 リクエストにヘッダーを渡すことができます。headers(key=value) 形式で指定します (例: headers('x-amz-request-payer' = 'requester'))。使用例は こちら を参照してください。
extra_credentials省略可能。roleARN をこのパラメータ経由で渡すことができます。例は こちら を参照してください。

引数は named collections を使用して渡すこともできます。この場合、url, access_key_id, secret_access_key, format, structure, compression_method は同様に動作し、追加のパラメータがサポートされます:

ArgumentDescription
filename指定された場合、url に付加されます。
use_environment_credentialsデフォルトで有効です。環境変数 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, AWS_CONTAINER_CREDENTIALS_FULL_URI, AWS_CONTAINER_AUTHORIZATION_TOKEN, AWS_EC2_METADATA_DISABLED を使用して追加パラメータを渡すことを許可します。
no_sign_requestデフォルトで無効です。
expiration_window_secondsデフォルト値は 120 です。

返される値

指定した構造を持ち、指定したファイル内のデータを読み書きするためのテーブル。

次の例では、cluster_simple クラスター内のすべてのノードを使用して、/root/data/clickhouse および /root/data/database/ ディレクトリ内のすべてのファイルからデータを選択します。

SELECT * FROM s3Cluster(
    'cluster_simple',
    'http://minio1:9001/root/data/{clickhouse,database}/*',
    'minio',
    'ClickHouse_Minio_P@ssw0rd',
    'CSV',
    'name String, value UInt32, polygon Array(Array(Tuple(Float64, Float64)))'
) ORDER BY (name, value, polygon);

クラスタ cluster_simple 内のすべてのファイルに含まれる行数の合計をカウントします。

ヒント

ファイル一覧に先頭ゼロ付きの数値範囲が含まれている場合は、各桁ごとに波かっこを使った記法を用いるか、? を使用してください。

本番環境で利用する場合は、named collections の使用を推奨します。以下はその例です。


CREATE NAMED COLLECTION creds AS
        access_key_id = 'minio',
        secret_access_key = 'ClickHouse_Minio_P@ssw0rd';
SELECT count(*) FROM s3Cluster(
    'cluster_simple', creds, url='https://s3-object-url.csv',
    format='CSV', structure='name String, value UInt32, polygon Array(Array(Tuple(Float64, Float64)))'
)

プライベートバケットとパブリックバケットへのアクセス

ユーザーは、s3 関数についてこちらで説明されているのと同様の方法を利用できます。

パフォーマンス最適化

s3 関数のパフォーマンスを最適化する方法の詳細は、詳細ガイド を参照してください。