将巨大的 CSV 文件内容转换为可快速查询的数据存储的最佳方式?

Best way to transform a huge CSV file content into quickly queryable data store?

有一个要求允许网络用户上传一个 CSV 文件,其中包含大约 1000 万个客户 ID。如果 CSV 文件中存在 he/she,则此数据稍后必须用于向客户提供某些其他应用程序内容。系统以这种方式预计会有成千上万的客户请求,因此后端需要扩展 - 这里的问题是,在后端将 CSV 转换为任何特定 DB/S3 的最佳方法是什么,因此它允许轻松过滤?每次都存储和解析文件是不可行的,所以想了解任何可能的最佳方法?

您可以使用 Amazon Athena or Amazon S3 Select.

Amazon Athena 是一个查询引擎,可以直接从存储在 Amazon S3 中的(多个)文件中读取数据。它在文件为柱状格式(例如 Parquet 或 ORC)并经过压缩时效果最佳,但它也适用于普通 CSV 文件。它具有高度可扩展性,尤其是在查询多个文件的情况下。但是,它根据数据在 S3 中的位置将数据视为存储在 'table' 中,因此它不适合查询随机文件。

Amazon S3 Select 一次只能处理一个文件,但它可以直接查询 CSV 文件(以及一些其他格式)。它具有类似于 SQL 的查询功能。

如果你的需求是每次查询不同的文件,我推荐S3 Select。

这两个选项的好处是您不需要将数据'load'放入数据库。但是,如果您需要非常快速地访问数据,那肯定是您可以考虑的一个选项。 (Amazon Redshift 可以相当快地处理 table 中的数十亿行,但它更昂贵。)