【问题标题】:Spark query taking too long timeSpark 查询耗时过长
【发布时间】:2015-09-08 00:51:00
【问题描述】:

我正在评估 Spark/Cassandra 和 Elasticsearch 以决定选择哪一个。

现在,我正在使用 spark 和 Cassandra 生成不同的报告,但我注意到有 200 万条记录(大约 400 列),分别需要大约 9.7、9.8、9.9、10 和 10 分钟来生成 5 个报告. 更改调度模式"spark.scheduler.mode", "FAIR" 似乎并没有太大的不同。

我正在考虑将所有数据加载到内存中并将其缓存,以便如果数据是预加载的内存,则后续查询可以更快地运行。

但是,在 Elasticsearch 中运行相同的报告只需 2 分钟。

关于我可以做些什么来提高火花响应时间的任何想法?

【问题讨论】:

  • 请分享您的一些代码,并尝试找出哪个 API 需要更多时间。
  • @Knight71 - 没什么复杂的。只是在 Java 中使用 SparkSQL 做select count(*) from table

标签: elasticsearch cassandra apache-spark datastax datastax-enterprise


【解决方案1】:

首先,我认为 ElasticSearch 与 Spark 并不是一个很好的比较,因为这两个系统确实针对不同的用例。 Elastic Search 专注于搜索和快速检索,而 Spark 是一个专注于超大型数据集的通用分析框架。

但是关于如何让您的 Spark 报告运行得更快。使用 C* 的关键是确保 spark.cassandra.input.split.size 足够小,以便您获得足够的 Spark 任务来充分利用集群中的并行性。完成此操作后,您可以考虑将读取表缓存在内存中以便更快地访问。

【讨论】:

  • 如果这有助于加快我的查询速度,我会调查一下。谢谢
【解决方案2】:

Spark无法下推“group by”的操作。我发现另一个影响传输速度的瓶颈。将“es.scroll.size”设置为10000。它可以提高从ES到spark的传输速度。

【讨论】:

    猜你喜欢
    • 2019-08-02
    • 2011-11-03
    • 2015-10-23
    • 2012-11-04
    • 2013-07-24
    • 2016-11-04
    • 2021-10-07
    相关资源
    最近更新 更多