我正在评估Spark / Cassandra和Elasticsearch来决定选择哪一个。
现在,我正在使用spark和Cassandra生成不同的报告,但我发现有200万条记录(aprrox.400列),分别需要9.7,9.8,9.9,10和10分钟来生成5个报告。
更改计划模式"spark.scheduler.mode", "FAIR"
似乎没有太大的区别。
我正在考虑将所有数据加载到内存中并进行缓存,以便后续查询可以在数据预加载内存时运行得更快。
但是,在Elasticsearch中运行相同的报告只需要2分钟。
关于如何改善火花响应时间的任何想法?
答案 0 :(得分:3)
首先,我不认为ElasticSearch与Spark真的是一个很好的比较,因为这两个系统真正针对不同的用例。 Elastic Search专注于搜索和快速检索,Spark是一个通用的分析框架,专注于非常大的数据集。
但至于如何让您的Spark报告更快地运行。使用C *的关键是确保spark.cassandra.input.split.size
足够小,以便您获得足够的Spark任务来充分利用群集中的并行性。执行此操作后,您可以考虑在内存中缓存读取表,以便更快地访问。
答案 1 :(得分:1)
Spark无法下推“ group by”的操作。我发现了另一个影响传输速度的瓶颈。将“ es.scroll.size”设置为10000。可以提高从ES到火花的传输速度。