首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cassandra +实时分析星火

Cassandra +实时分析星火
EN

Stack Overflow用户
提问于 2016-04-13 11:29:59
回答 2查看 2K关注 0票数 5

我正在为“实时绘制大数据(空间数据)”开发一个应用程序。在星火流+星火SQL + WebSocket的帮助下,我能够在仪表板上呈现预定义的查询。但是我想用交互式查询和临时查询来获取数据。

为此,我试图用“星火流+卡桑德拉”来实现它。这些查询需要对大量数据进行聚合和筛选。

我是卡桑德拉和斯派克的新手,所以我对下面的方法感到困惑,这样会更好\更快:

  1. 火花流->过滤(火花) ->保存到Cassandra ->Interactive查询-> UI (仪表板)
  2. 火花流->过滤( Spark ) ->保存到Cassandra ->Spark SQL ->交互式查询-> UI (仪表板)

卡桑德拉会很快给出实时结果吗?或者我应该从Cassandra创建一个RDD来执行交互式查询。

其中一个查询是:

代码语言:javascript
运行
复制
"SELECT *  FROM PERFORMANCE.GEONAMES A  INNER JOIN  
(SELECT max(GEONAMEID) AS MAPINFO_ID FROM  PERFORMANCE.GEONAMES
where longitude between %LL_LONG% and %UR_LONG% 
and latitude between %LL_LAT% and %UR_LAT%  
and %WHERE_CLAUSE% GROUP BY LEFT(QUADKEY, %QUAD_TREE_LEVEL%)  )
AS B ON A.GEONAMEID = B.MAPINFO_ID"

如有任何意见或建议,将不胜感激。谢谢,

感谢@doanduyhai提出的SASI二级指数,这确实产生了巨大的变化。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-13 11:50:12

卡桑德拉会很快给出实时结果吗?或者我应该从Cassandra创建一个RDD来执行交互式查询。

这取决于您预先做了多少过滤,以及集群中的机器数量。如果Cassandra表有1Tb的数据,而查询在内存中获取100 1Gb的数据,假设集群有10台机器,这意味着在内存中加载1GB是可以管理的,但查询永远不会是分分钟的。

现在,如果过滤器足够从Cassandra表中获取100 if总数,则意味着每台机器10 if,并且有可能存在秒级的延迟。

如何在卡桑德拉早期过滤数据?

  1. 使用新的SASI二级指数 (等待卡桑德拉3.5本周发布,因为已经发现了两个关键的bug)
  2. 使用DSE搜索对Solr进行早期筛选
  3. 使用层卢塞尼次级指数
票数 2
EN

Stack Overflow用户

发布于 2016-04-13 12:09:00

哪个会更好\更快

与往常一样,这取决于您想要运行什么样的查询。Cassandra根据如何设置表施加了一些限制;例如,不能在where子句中使用非索引列。如果在中间使用火花加载数据,则可以执行Spark允许的任何查询。

如果您使用SparkSQL/DataFrames,并执行Cassandra does允许的查询,Spark会将其推倒,从而获得与直接使用Cassandra类似的性能。否则,它将不得不从Cassandra加载所有数据,然后应用您指定的任何过滤器,这显然效率要低得多。

因此,总的来说,您可以使用Spark,但它将允许用户运行非常慢的查询。因此,您仍然应该知道如何构造Cassandra中的数据,以增加谓词向下推送原始Cassandra性能的可能性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36597022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档