メインコンテンツまでスキップ
メインコンテンツまでスキップ

s3Cluster テーブル関数

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

指定されたクラスタ内の多数のノードで、Amazon S3やGoogle Cloud Storage 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 [,..]])

引数

引数説明
cluster_nameリモートおよびローカルサーバーへのアドレスおよび接続パラメータのセットを構築するために使用されるクラスタの名前。
urlファイルまたは一連のファイルへのパス。読み取り専用モードで次のワイルドカードをサポートします: *, **, ?, {'abc','def'} および {N..M} ここで N, M は数字、abc, def は文字列です。詳細はパスのワイルドカードを参照してください。
NOSIGN認証情報の代わりにこのキーワードが提供されると、すべてのリクエストは署名されません。
access_key_id および secret_access_key指定されたエンドポイントで使用する認証情報を指定するキー。オプションです。
session_token指定されたキーに使用するセッショントークン。キーを渡す際にはオプションです。
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は同様に機能し、いくつかの追加パラメータがサポートされます。

引数説明
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関数のパフォーマンスを最適化する詳細については当社の詳細ガイドを参照してください。