跳转到主要内容
纽约出租车数据样本包含自 2009 年以来始发于纽约市的 30 多亿条出租车和网约车 (Uber、Lyft 等) 行程。本入门指南使用的是一个包含 300 万行的样本。 完整数据集可通过以下几种方式获取:
  • 直接从 S3 或 GCS 将数据导入 ClickHouse Cloud
  • 下载预先准备好的分区
  • 或者,您也可以在我们的演示环境 sql.clickhouse.com 中查询完整数据集。
以下示例查询是在 ClickHouse Cloud 的 生产环境 实例上执行的。更多信息请参见 “Playground 规格说明”

创建 trips 表

首先创建一个用于存储出租车行程的表:

直接从对象存储加载数据

用户可以先获取一小部分数据 (300 万行) 来熟悉数据内容。数据以 TSV 文件形式存储在对象存储中,可通过 s3 表函数轻松流式导入 ClickHouse Cloud。 同一份数据同时存储在 S3 和 GCS 中;请选择任一选项卡。
以下命令会将 S3 存储桶中的三个文件流式导入 trips_small 表 ({0..2} 语法是 0、1 和 2 的通配符) :

示例查询

以下查询基于上文所述的样本执行。你可以在完整数据集上通过 sql.clickhouse.com 运行这些示例查询,并将下面的查询改为使用表 nyc_taxi.trips 先来看看插入了多少行: 每个 TSV 文件大约有 100 万行,3 个文件总共有 3,000,317 行。我们先看几行数据: 可以看到,这些列包含上车和下车日期、地理坐标、车费明细、纽约街区等信息。 我们再运行几个查询。下面这个查询会显示上车次数最多的 10 个街区: 下面这个查询会按乘客数量显示平均车费:
runnable
下图展示了乘客数量与行程距离之间的相关性:
runnable

已准备好分区的下载

以下步骤提供有关原始数据集的信息,以及将已准备好的分区加载到自管理 ClickHouse server 环境中的方法。
有关数据集的说明和下载说明,请参见 https://github.com/toddwschneider/nyc-taxi-datahttp://tech.marksblogg.com/billion-nyc-taxi-rides-redshift.html。 下载后将得到约 227 GB 的未压缩 CSV 文件数据。通过 1 Gbit 连接下载大约需要一小时 (从 s3.amazonaws.com 并行下载时,至少可利用 1 Gbit 通道一半以上的带宽) 。 某些文件可能无法完整下载。请检查文件大小,并重新下载任何看起来有问题的文件。
如果你要运行下面所述的查询,必须使用完整的表名 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,共 16 个物理核心,128 GiB RAM,8x6 TB 硬盘,采用硬件 RAID-5 执行时间取三次运行中的最佳结果。但从第二次运行开始,查询会从文件系统缓存中读取数据。不会发生进一步缓存:每次运行都会重新读出并处理数据。 在三台服务器上创建一个表: 在每台服务器上:
在源服务器上:
以下查询将重新分布数据:
这需要 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 秒。 在这种情况下,查询处理时间首先取决于网络延迟。 我们运行查询时,客户端所在的数据中心与集群所在的数据中心不同,因此额外增加了大约 20 毫秒的延迟。

总结

最后修改于 2026年6月10日