gpt4 book ai didi

apache-spark - 使用 Spark 和 DataFrames 的 Parquet 与 Cassandra

转载 作者:行者123 更新时间:2023-12-02 21:51:58 24 4
gpt4 key购买 nike

我陷入了这样的困境,我无法选择哪种解决方案对我来说更好。我有一个非常大的表(几个 100GB)和几个较小的表(几个 GB)。为了在 Spark 中创建数据管道并使用 Spark ML,我需要连接这些表并执行一些 GroupBy(聚合)操作。这些操作对我来说真的很慢,所以我选择执行以下两项操作之一:

  • 使用 Cassandra 并使用索引来加速 GoupBy 操作。
  • 根据数据布局使用 Parquet 和分区。

我可以说,Parquet 分区运行速度更快、更具可扩展性,并且比 Cassandra 使用的内存开销更少。所以问题是这样的:

如果开发人员推断并理解数据布局及其使用方式,那么使用 Parquet 不是更好吗,因为您可以更好地控制它?为什么我要为 Cassandra 造成的开销付出代价?

最佳答案

Cassandra 也是分析用例的一个很好的解决方案,但方式不同。在对键空间进行建模之前,您必须知道需要如何读取数据。您还可以使用 where 和 range 查询,但采用严格限制的方式。有时您会讨厌这种限制,但这些限制是有原因的。 Cassandra 不像 Mysql。在 MySQL 中,性能并不是一个关键特性。它更多的是关于灵 active 和一致性。 Cassandra 是一个高性能写/读数据库。写比读更好。 Cassandra还具有线性可扩展性。

好吧,简单介绍一下您的用例:Parquet 是您更好的选择。这就是原因:

  • 您可以在非常大且未分割的数据集上聚合原始数据
  • 您的 Spark ML 作业听起来像是一个预定的、不是长时间运行的作业。 (每周一次,每天一次?)

这更适合 Parquet 的用例。 Parquet 是一种用于临时分析、过滤分析等内容的解决方案。如果您需要每月运行 1 到 2 次查询,Parquet 确实非常有用。如果营销人员想了解一件事并且响应时间不是那么重要,那么 Parquet 也是一个不错的解决方案。简单而简短:

  • 如果您了解查询,请使用 Cassandra。
  • 如果日常业务中需要使用查询,请使用 Cassandra
  • 如果实时性很重要,请使用 Cassandra(我提到最多 30 秒的延迟,客户执行操作后我可以在仪表板中看到结果)

  • 如果实时性不重要,请使用 Parquet

  • 如果查询每天不会执行 100 次,请使用 Parquet。
  • 如果您想要进行批处理,请使用 Parquet

关于apache-spark - 使用 Spark 和 DataFrames 的 Parquet 与 Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37806066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com