首页 > 解决方案 > 将巨大的 CSV 文件内容转换为可快速查询的数据存储的最佳方法?

问题描述

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

标签: javadatabasecsvamazon-s3datastore

解决方案


您可以使用Amazon Athena或 Amazon S3 Select

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

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

如果您需要每次查询不同的文件,我会推荐 S3 Select。

这两个选项的好处是您不需要将数据“加载”到数据库中。但是,如果您需要非常快速地访问数据,这当然是您可以考虑的一个选项。(Amazon Redshift 可以非常快速地处理表中的数十亿行,但成本更高。)


推荐阅读