BigQuery から ClickHouse へのデータのロード
このガイドは ClickHouse Cloud とセルフマネージド ClickHouse v23.5+ に対応しています。
このガイドでは、BigQuery から ClickHouse へのデータ移行方法を説明します。
まず、テーブルを Google のオブジェクトストレージ (GCS) にエクスポートし、そのデータを ClickHouse Cloud にインポートします。これらの手順は、BigQuery から ClickHouse にエクスポートしたい各テーブルごとに繰り返す必要があります。
ClickHouse へのデータエクスポートにかかる時間はどれくらいですか?
BigQuery から ClickHouse へのデータエクスポートは、データセットのサイズに依存します。比較として、今回のガイドを使用して 4TB の公開 Ethereum データセット を BigQuery から ClickHouse にエクスポートするのに約1時間かかります。
テーブル | 行数 | エクスポートされたファイル | データサイズ | BigQuery エクスポート | スロット時間 | ClickHouse インポート |
---|---|---|---|---|---|---|
blocks | 16,569,489 | 73 | 14.53GB | 23秒 | 37分 | 15.4秒 |
transactions | 1,864,514,414 | 5169 | 957GB | 1分38秒 | 1日 8時間 | 18分5秒 |
traces | 6,325,819,306 | 17,985 | 2.896TB | 5分46秒 | 5日 19時間 | 34分55秒 |
contracts | 57,225,837 | 350 | 45.35GB | 16秒 | 1時間51分 | 39.4秒 |
合計 | 82.6 億 | 23,577 | 3.982TB | 8分3秒 | > 6日 5時間 | 53分45秒 |
1. テーブルデータを GCS にエクスポートする
このステップでは、BigQuery SQL ワークスペース を利用して SQL コマンドを実行します。以下に、BigQuery テーブル mytable
を GCS バケットにエクスポートする方法を示します。EXPORT DATA
ステートメントを使用します。
上記のクエリでは、BigQuery テーブルを Parquet データフォーマット にエクスポートします。また、uri
パラメータに *
文字が含まれています。これにより、エクスポートが 1GB を超えた場合に出力が複数のファイルにシャードされ、数値が増加するサフィックスが付きます。
このアプローチにはいくつかの利点があります。
- Google では、GCS に対して最大 50TB を毎日無料でエクスポートすることができます。ユーザーは GCS ストレージのみに支払います。
- エクスポートは自動的に複数のファイルを生成し、各ファイルを最大 1GB のテーブルデータに制限します。これは ClickHouse にとって有益で、インポートを並列化することを可能にします。
- Parquet は列指向フォーマットであり、本質的に圧縮されているため、BigQuery のエクスポートおよび ClickHouse のクエリ用のより良い相互運用フォーマットを提供します。
2. GCS から ClickHouse にデータをインポートする
エクスポートが完了すると、このデータを ClickHouse テーブルにインポートできます。ClickHouse SQL コンソール または clickhouse-client
を使用して以下のコマンドを実行できます。
まず、ClickHouse にテーブルを 作成する 必要があります。
テーブルを作成した後、クラスター内に複数の ClickHouse レプリカがある場合は、エクスポートを高速化するために設定 parallel_distributed_insert_select
を有効にします。ClickHouse ノードが1つだけの場合は、このステップをスキップできます。
最後に、INSERT INTO SELECT
コマンド を使用して、GCS から ClickHouse テーブルにデータを挿入できます。このコマンドは、SELECT
クエリの結果に基づいてテーブルにデータを挿入します。
挿入するデータを取得するために、GCS バケットからデータを取得するために s3Cluster 関数 を使用できます。これは、GCS が Amazon S3 と相互運用可能であるためです。ClickHouse ノードが1つだけの場合は、s3Cluster
関数の代わりに s3 テーブル関数 を使用できます。
上記のクエリで使用される ACCESS_ID
と SECRET
は、GCS バケットに関連付けられた HMAC キー です。
3. データエクスポートの成功をテストする
データが正しく挿入されたかをテストするには、新しいテーブルで単純に SELECT
クエリを実行します。
さらに BigQuery テーブルをエクスポートするには、上記の手順を各追加のテーブルに対して再実行してください。
さらなる情報とサポート
このガイドに加えて、ClickHouse を使用して BigQuery の速度を向上させ、増分インポートを処理する方法を示すブログ投稿を読むこともお勧めします。
BigQuery から ClickHouse にデータを転送する際に問題がある場合は、[email protected] までお気軽にお問い合わせください。