繁体   English   中英

Cassandra表分析方法?

[英]Cassandra table analytics approaches?

我需要进行实时过滤,并在C *表中的一个相对较大的分区上进行排序,该分区大约有2-3亿行,每行有一百多列。 应该可以对列的任何组合进行过滤和排序。 我们尝试使用Apache Solr(DataStax Enterprise 4.8)来完成此类工作,但面临下一个问题:

  • Solr索引在频繁和批量数据更新的情况下效果不佳
  • 有时Solr只是不重建索引(等待了几个小时)
  • Solr只能以CL = ONE读取,因此数据可能不一致

因此,现在我们寻找另一种方法。 我们现在正在尝试Apache Spark 1.4。 但是看起来排序性能并不令人满意-20亿行大约1.5分钟(我们的目标〜1-2秒)。 可能是因为我们在Spark学习的一开始就做错了。 我也知道,更多的处理器内核和内存可能会提高性能。

今天,我阅读了有关带有内存索引的Apache Inginte的信息。 也许这对于我们的案例来说是更好的工具?

所以现在我只是在寻找一种建议的工具来执行这样的工作。

谢谢。

ps:DataStax Enterprise 4.8,Apache Cassandra 2.1.9.791,Apache Solr 4.10.3.1.172,Apache Spark 1.4.1.1。

我认为您的方法是最好的。 Spark(例如SparkSQL)或内存中的数据网格(如Ignite)。 两者都将执行相同的操作-将整个内容推送到内存中,并对数据进行随机整理和切块。 http://velvia.github.io/Subsecond-Joins-in-Spark-Cassandra/ Flink是可以考虑的另一种选择,但与Spark并没有什么不同。

另一方面,2-3亿行应该适合Postgres DB或类似的东西。 检查是否还不够。

在Hadoop世界中,您又拥有Hive(缓慢且稳定)或Impala(更快且内存更多)或Spark。 但是这些对Cassandra来说效果不佳。 而且我不认为您的数据足够考虑Hadoop环境(维护成本)。

抱歉,但在2秒内对超过100列的20亿行进行了排序。 我认为这将是一个巨大的挑战。 我的意思是您有2000亿列。 建议每个分区键最多20亿个。 而且我认为每个分区20亿美元太多了。 如果想要更好的火花性能,则必须找到瓶颈。 您能否再详细介绍一下您的设置? 您有多少个卡桑德拉节点? 有多少个Spark节点? 硬件规格?

Apache Ignite对索引提供了完全的SQL支持,您可以使用索引来提高性能。 我一定会尝试的。

请参阅此页面以获取详细信息: https : //apacheignite.readme.io/docs/sql-queries

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM