Skip to main content

S3 バケット からの Parquet ファイルの取り込み

以下では、S3 テーブルエンジン を使用して Parquet ファイルを読み取る際の基本をいくつか説明します。
  • IAM サービスユーザー用の access key と secret key を作成します。 通常のログインユーザーは MFA ポリシーが設定されている場合があるため、たいてい使用できません。
  • ポリシーの権限を設定し、サービスユーザーがバケット とフォルダーにアクセスできるようにします。
以下は非常にシンプルな例で、実際のデータに適用する前に、Parquet ファイルへのアクセスが正しく行えるかどうかをテストするために使えます。 ユーザーとバケット の作成例が必要な場合は、最初の 2 つのセクション (create user と create bucket) を参照してください: S3 と ClickHouse の統合 私はこのサンプルファイルを使用しました: https://github.com/Teradata/kylo/tree/master/samples/sample-data/parquet これをテスト用バケット にアップロードしました バケット には、次のようなポリシーを設定できます: (必要に応じて調整してください。これは権限がかなり広く許可されていますが、テストには役立ちます。必要に応じて権限を絞り込んでください))
S3テーブルエンジンを使用すると、次のような構文でクエリを実行できます。 https://clickhouse.com/docs/sql-reference/table-functions/s3/
Parquetフォーマットのデータ型リファレンスはこちらです: https://clickhouse.com/docs/interfaces/formats/#data-format-parquet データをClickHouseネイティブテーブルに取り込むには: 次のようにテーブルを作成します (Parquetファイル内のカラムをいくつか選んだだけです) :
新しいテーブルに挿入するデータを S3 バケットから選択します:
インポートを確認します:
実際のデータをインポートする準備ができたら、ワイルドカードや範囲指定などの特別な構文を使って、バケット内のフォルダ、サブフォルダ、ファイルを指定できます。 最初はインポートを試すために、特定の年や数か月、あるいは一部の日付範囲など、少数のディレクトリとファイルに絞ってテストすることをおすすめします。 ここで紹介した path オプションに加えて、新たに追加された構文 ** を使うと、すべてのサブディレクトリを再帰的に指定できます。 https://clickhouse.com/docs/sql-reference/table-functions/s3/ たとえば、path とバケットの構造が次のようになっているとします。 https://your_s3_bucket.s3.amazonaws.com/<your_folder>/<year>/<month>/<day>/<filename>.parquet https://mars-doc-test.s3.amazonaws.com/system_logs/2022/11/01/my-app-logs-0001.parquet これにより、2021~2022年の毎月1日分のすべてのファイルを取得できます。 https://mars-doc-test.s3.amazonaws.com/system_logs/{2021-2022}/**/01/*.parquet
最終更新日 2026年7月23日