SeaweedFS カタログとのインテグレーションは、Iceberg テーブルでのみ利用できます。
- 単一サービス - カタログのメタデータと Parquet データを単一のプロセスで提供し、別途メタデータデータベースは必要ありません
- Iceberg REST カタログ仕様に準拠した REST API
- サーバー側のメンテナンス - 外部のメンテナンスサービスを使用せずに、Parquet の自動コンパクションとスナップショットの期限切れ処理を行います
この機能は実験的であるため、次の設定で有効にする必要があります。
SET allow_experimental_database_iceberg = 1;ローカル開発環境のセットアップ
前提条件
- Docker および Docker Compose: Docker がインストールされ、起動していることを確認します
- バージョン: SeaweedFS 4.42 以降、ClickHouse 26.8 以降 (25.8 以降のバージョンでも読み取りと挿入は可能ですが、カタログを介したテーブルの作成には 26.8 が必要です)
- PyIceberg を含む Python (任意) : 以下でサンプルデータをシードするために使用します
ローカル SeaweedFS カタログのセットアップ
s3config.json ファイルを作成します。
docker-compose.yml ファイルを作成します。
mini コマンドは、SeaweedFS スタック全体を単一のコンテナー内で起動します。-tableBucket=analytics フラグは、Iceberg のwarehouseとして使用する、analytics という名前の S3 Tables バケットを事前に作成します。
ステップ 3: 次のコマンドを実行してサービスを起動します。
サンプルデータの投入
pip install pyiceberg pyarrow) を使用してテーブルを作成し、数行を追加します。
ローカルの SeaweedFS カタログへの接続
catalog_credential と oauth_server_uri は、OAuth2 のクライアント認証情報フローを通じてカタログ自体への認証に使用します。SeaweedFS では、どちらにも同じアクセスキーとシークレットキーを使用できます。
ClickHouse を使用して SeaweedFS カタログテーブルをクエリする
バッククォートが必要ですClickHouse は複数のネームスペースをサポートしていないため、バッククォートが必要です。
ClickHouse からテーブルを作成し、データを書き込む
IcebergS3 エンジン句では新しいテーブルのストレージパスを指定し、write_full_path_in_iceberg_metadata により、ClickHouse はテーブルの完全な場所をカタログに登録します。
カタログを介したテーブルの作成には、ClickHouse 26.8 以降が必要です。バージョン 26.4~26.7 では、ネームスペースを登録する前にテーブルファイルが書き込まれますが、ネームスペースがすでにカタログに存在しない限り、SeaweedFS はこれを拒否します。26.4 より前のバージョンでは成功したように見えますが、テーブルファイルはカタログに登録されないままオブジェクトストレージに書き込まれます。
データレイクから ClickHouse へのデータの読み込み
INSERT INTO SELECT を使用して、SeaweedFS カタログテーブルからデータを読み込みます。