这将是一个更快(更好)的工具,用于查询以Parquet格式存储的数据--Spark SQL,Athena或ElasticSearch?

时间:2017-12-28 04:31:26

标签: performance apache-spark elasticsearch etl amazon-athena

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

暂时使用 PySpark / Spark进行初始ETL阶段。 接下来,此处理后的数据将汇总简单计数,平均值等)& 然后在交互式信息中心中可视化

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

  1. Spark SQL(内存动态查询)
  2. AWS Athena(无服务器SQL查询,基于Presto)
  3. 弹性搜索(搜索引擎)
  4. Redis(键值数据库)
  5. 如果您知道更好的选择,请随意提出替代工具。

2 个答案:

答案 0 :(得分:2)

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

我还使用带有Kibana的ElasticSearch作为文本搜索引擎,我们使用基于ElasticSearch和Kibana的AWS Log Analytics“解决方案”。我都喜欢雅典娜最适合处理大量日志数据,因为以压缩二进制格式处理它更经济。兆字节的JSON文本数据以实木复合地板格式减少到大约30 gig或更少。我们的开发人员在使用ElasticSearch / Kibana分析其日志文件中的问题时会提高生产力,因为ElasticSeach和Kibana是如此易于使用。用于控制日志记录保留时间的策展人Lambda函数也是AWS Centralized日志记录的一部分,也非常方便。

答案 1 :(得分:1)

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

  1. 您在AWS上(因此Elastic SearchAthena是选项)。因此,我将引导您访问AWS文档。
  2. 由于您有预定义和索引过滤器,因此您拥有排序良好的结构化数据。
  3. 完成列出的选项

    1. Spark SQL - 如果您已经在考虑Spark并且您已经在AWS上,那么您可以利用AWS Elastic Map Reduce
    2. AWS Athena(无服务器SQL查询,基于Presto) - Athena是一款功能强大的工具。它允许您查询存储在S3上的数据,这是非常划算的。但是,在Athena中构建工作流程可能需要一些工作,因为您将花费大量时间来管理S3上的文件。此外,Athena只能生成CSV输出,因此它通常最适合作为大数据管道的最后阶段。
    3. Elastic Search(搜索引擎) - 实际上不是一个查询工具,因此很可能不是此管道核心的一部分。
    4. Redis(键值DB) - Redis是内存键值数据存储。它通常用于提供小部分信息,以便在caching and session management等用例中快速被应用程序使用。因此,它似乎不适合您的用例。如果您想亲身体验Redis,我建议Try Redis
    5. 我也会研究Amazon Redshift

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

      正如@Damien_The_Unbeliever推荐的那样,您自己的原型设计和基准测试将无法替代。