对于查询以 Parquet 格式存储的数据,Spark SQL、Athena 或 ElasticSearch 哪个是更快(更好)的工具?

Which would be a quicker (and better) tool for querying data stored in the Parquet format - Spark SQL, Athena or ElasticSearch?

我目前正在构建一个 ETL 管道,它将数据表(约 100+ GB)输出到下游交互式仪表板,从而允许动态过滤数据(基于预定义和索引过滤器)。

已专注于在初始 ETL 阶段使用 PySpark / Spark。 接下来,将汇总简单计数、平均值等)&然后可视化在交互式仪表板中。

对于交互式查询部分,我想知道哪种工具最适合我的结构化和事务性数据(以 Parquet 格式存储)-

  1. Spark SQL(内存动态查询)
  2. AWS Athena(无服务器 SQL 查询,基于 Presto)
  3. 弹性搜索(搜索引擎)
  4. Redis(键值数据库)

如果您知道更好的选择,请随时提出替代工具的建议。

根据您提供的信息,我将做出几个假设:

  1. 您在 AWS 上(因此 Elastic Search and Athena 是选项)。因此,我将引导您查看 AWS 文档。
  2. 由于您拥有预定义和索引的过滤器,因此您拥有有序的结构化数据。

浏览列出的选项

  1. Spark SQL - 如果您已经在考虑 Spark and you are already on AWS, then you can leverage AWS Elastic Map Reduce
  2. AWS Athena(无服务器 SQL 查询,基于 Presto)- Athena 是一个强大的工具。它可以让您查询存储在 S3 上的数据,这非常划算。但是,在 Athena 中构建工作流可能需要一些工作,因为您将花费大量时间在 S3 上管理文件。从历史上看,Athena 只能生成 CSV 输出,因此它通常最适合作为大数据管道的最后阶段。但是,由于支持 CTAS 语句,您现在可以输出多种格式的数据,例如具有多种压缩算法的 Parquet。
  3. Elastic Search(搜索引擎)- 不是真正的查询工具,因此它可能不是此管道核心的一部分。
  4. Redis(键值数据库)- Redis 是一个内存键值数据存储。它通常用于提供少量信息,供应用程序在 caching and session management. Therefore, it does not seem to fit your use case. If you want some hands on experience with Redis, I recommend Try Redis.
  5. 等用例中快速使用。

我也会研究 Amazon Redshift

如需进一步阅读,请阅读 Big Data Analytics Options on AWS

正如@Damien_The_Unbeliever 所建议的那样,您自己的原型设计和基准测试将无可替代。

Athena 不限于 .csv。事实上,使用像 parquet 这样的二进制压缩格式是与 Athena 一起使用的最佳实践,因为它大大减少了查询时间和成本。我使用 AWS firehose、lambda 函数和胶水爬虫将文本数据转换为压缩二进制格式,以便通过 Athena 进行查询。当我在处理大量数据时遇到问题时,问题是忘记提高为帐户设置的默认 Athena 限制。我有一个朋友处理大量实用数据以进行预测分析,他确实遇到了 Athena 的扩展问题,但那是在早期。

我还使用 ElasticSearch 和 Kibana 作为文本搜索引擎,我们使用基于 ElasticSearch 和 Kibana 的 AWS Log Analytics "solution"。我都喜欢。 Athena 最适合处理大量日志数据,因为以压缩二进制格式处理它更经济。 1 TB 的 JSON 文本数据以 parquet 格式减少到大约 30 g 或更少。我们的开发人员在使用 ElasticSearch/Kibana 分析日志文件中的问题时效率更高,因为 ElasticSeach 和 Kibana 非常易于使用。控制日志记录保留时间并且是 AWS 集中日志记录的一部分的 curator Lambda 函数也非常方便。

你可以使用 amazon quicksight ,它有 spice 做查询..同时可以做可视化..