ニューヨークタクシーデータ
ニューヨークタクシーデータは、2009年以降ニューヨーク市で発生した30億件以上のタクシーおよびハイヤー車両(Uber、Lyftなど)のトリップから構成されています。このデータセットは、以下の2つの方法で取得できます:
- S3またはGCSから直接ClickHouse Cloudにデータを挿入する
- 準備されたパーティションをダウンロードする
tripsテーブルの作成
タクシーの乗車データ用のテーブルを作成することから始めます:
オブジェクトストレージからデータを直接ロードする
データに慣れるために、小さなサブセットを取得しましょう。データはTSVファイルとしてオブジェクトストレージにあり、s3
テーブル関数を使用してClickHouse Cloudにストリームするのが簡単です。
同じデータがS3とGCSの両方に格納されているので、いずれかのタブを選択してください。
- GCS
- S3
以下のコマンドは、trips
テーブルにGCSバケットから3つのファイルをストリーミングします({0..2}
構文は0、1、2の値のワイルドカードです):
以下のコマンドは、trips
テーブルにS3バケットから3つのファイルをストリーミングします({0..2}
構文は0、1、2の値のワイルドカードです):
サンプルクエリ
挿入された行数を確認してみましょう:
各TSVファイルには約100万行があり、3つのファイルに合計3,000,317行が含まれています。では、いくつかの行を見てみましょう:
ピックアップおよびドロップオフの日付、地理座標、運賃の詳細、ニューヨークの近隣地区などのカラムがあります:
いくつかのクエリを実行しましょう。このクエリは、最も頻繁にピックアップされた上位10の近隣地区を示します:
結果は以下の通りです:
このクエリは、乗客数に基づく平均運賃を示します:
こちらは、乗客数とトリップの距離の相関を示します:
結果の最初の部分は以下の通りです:
準備されたパーティションのダウンロード
以下の手順は、元のデータセットに関する情報と、セルフマネージドのClickHouseサーバー環境に準備されたパーティションをロードするための方法を提供します。
https://github.com/toddwschneider/nyc-taxi-data 及び http://tech.marksblogg.com/billion-nyc-taxi-rides-redshift.html を参照し、データセットの説明とダウンロード手順を確認してください。
ダウンロードすると、約227GBの未圧縮データがCSVファイルで得られます。ダウンロードには、1Gbitの接続で約1時間かかります(s3.amazonaws.comからの並行ダウンロードは、少なくとも1Gbitチャンネルの半分を回復します)。 一部のファイルは完全にダウンロードされない可能性があります。ファイルサイズを確認し、疑わしいものは再ダウンロードしてください。
以下のクエリを実行する場合は、完全なテーブル名 datasets.trips_mergetree
を使用する必要があります。
単一サーバー上の結果
Q1:
0.490秒。
Q2:
1.224秒。
Q3:
2.104秒。
Q4:
3.593秒。
以下のサーバーが使用されました:
Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz 2基、物理コア合計16、RAM 128 GiB、8x6 TB HDでRAID-5構成
実行時間は3回の実行の中で最良のものです。ただし、2回目の実行から、クエリはファイルシステムキャッシュからデータを読み取ります。これ以降のキャッシュは発生せず、各実行でデータは読み出され、処理されます。
三台のサーバーでのテーブルの作成:
各サーバーで:
ソースサーバーで:
次のクエリはデータを再分配します:
これには2454秒を要します。
三台のサーバーで:
Q1: 0.212秒。 Q2: 0.438秒。 Q3: 0.733秒。 Q4: 1.241秒。
驚きはありません。クエリは線形にスケールします。
140台のサーバークラスターからの結果もあります:
Q1: 0.028秒。 Q2: 0.043秒。 Q3: 0.051秒。 Q4: 0.072秒。
この場合、クエリ処理時間は主にネットワーク遅延によって決定されます。 クラスターが位置するデータセンターとは異なる場所にあるクライアントでクエリを実行したため、約20msの遅延が加わりました。
サマリー
サーバー数 | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
1, E5-2650v2 | 0.490 | 1.224 | 2.104 | 3.593 |
3, E5-2650v2 | 0.212 | 0.438 | 0.733 | 1.241 |
1, AWS c5n.4xlarge | 0.249 | 1.279 | 1.738 | 3.527 |
1, AWS c5n.9xlarge | 0.130 | 0.584 | 0.777 | 1.811 |
3, AWS c5n.9xlarge | 0.057 | 0.231 | 0.285 | 0.641 |
140, E5-2650v2 | 0.028 | 0.043 | 0.051 | 0.072 |