跳转到主要内容
此数据集包含 Stack Overflow 上的所有 PostsUsersVotesCommentsBadgesPostHistoryPostLinks 数据。 您既可以下载预先准备好的 Parquet 版本数据,其中包含截至 2024 年 4 月的全部数据,也可以下载 XML 格式的最新数据并将其加载。Stack Overflow 会定期更新这些数据——历史上通常每 3 个月更新一次。 下图展示了 Parquet 格式下可用表的 schema。 有关这些数据的 schema 说明,请参见此处

预先准备好的数据

我们提供了这份数据的 Parquet 格式副本,数据更新至 2024 年 4 月。对于 ClickHouse 来说,按行数看 (6000 万条 posts) ,这个数据集并不算大,但其中包含大量文本以及较大的 String 列。
以下耗时针对位于 eu-west-2 的 96 GiB、24 vCPU ClickHouse Cloud 集群。数据集位于 eu-west-3

Posts

Posts 也可按年份获取,例如 https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/posts/2020.parquet

Votes

Votes 也提供按年份划分的版本,例如 https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/votes/2020.parquet

Comments

Comments 也按年份提供,例如 https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/comments/2020.parquet

Users

Badges

PostHistory

原始数据集

原始数据集可在 https://archive.org/download/stackexchange 下载,格式为压缩的 (7zip) XML;文件名前缀为 stackoverflow.com*

下载

这些文件最大可达 35GB,下载大约需要 30 分钟,具体取决于网络连接情况——下载服务器会将速度限制在约 20MB/秒。

转换为 JSON

在撰写本文时,ClickHouse 尚不原生支持将 XML 用作输入格式。要将数据加载到 ClickHouse 中,首先需要将其转换为 NDJSON。 我们建议使用 xq 这个 Linux 工具将 XML 转换为 JSON,它是针对 XML 文档的简单 jq 封装。 安装 xq 和 jq:
以下步骤适用于上述任一文件。这里以 stackoverflow.com-Posts.7z 文件为例,可按需调整。 使用 p7zip 解压该文件。解压后会得到一个 XML 文件,本例中为 Posts.xml
这些文件的压缩比约为 4.5 倍。Posts 文件压缩后为 22GB,未压缩时约为 97GB。
以下命令会将 XML 文件拆分为多个文件,每个文件包含 10000 行。
运行上述命令后,你会得到一组文件,每个文件有 10000 行。这样可以确保下一条命令的内存开销不会过高 (xml 到 JSON 的转换是在内存中完成的) 。
上述命令会生成一个 posts.json 文件。 使用以下命令将其加载到 ClickHouse 中。请注意,这里为 posts.json 文件指定了 schema。你需要根据数据类型进行相应调整,使其与目标表一致。

示例查询

以下是几个简单的查询,帮助你快速上手。

回答最多的用户 (活跃账号)

该账号需要有 UserId

争议最大的帖子

致谢

感谢 Stack Overflow 根据 cc-by-sa 4.0 许可证提供这些数据,并感谢他们所做的努力;数据原始来源见 https://archive.org/details/stackexchange
最后修改于 2026年6月25日