2016-04-13 31 views
3

我正在研究“大数据(空间数据)实时呈现”应用程序。 借助Spark Streaming + Spark SQL + WebSocket,我可以在仪表板上呈现预先定义的查询。但我想用交互式查询和特别查询来获取数据。Cassandra + Spark用于实时分析

为此我试图用“Spark Streaming + Cassandra”来实现它。这些查询需要对大量数据进行聚合和过滤。

我是新来卡桑德拉和火花,让我感到困惑的下面技术途径,这会更好\更快:

  1. 星火流 - >筛选(火花) - >保存卡桑德拉 - >互动查询 - > UI(控制板)
  2. 星火流 - >筛选(火花) - >保存到卡桑德拉 - >星火SQL - >交互式查询 - > UI(控制板)

威尔卡桑德拉足够快给结果实时 ?或者我应该从Cassandra创建一个RDD来执行对它的交互式查询。

其中一个查询的是:

"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二级索引,它真的造成了巨大的差异。

+0

性能将很大程度上取决于您的表格的设计以及您需要阅读多少行来回答单个请求。如果您正在优化用户界面呈现的路径,那么将数据写入卡桑德拉的形状将会以最少的读数为您提供所需的信息。我不认为有没有一个普遍的答案没有考虑到应用程序的具体要求。 – maasg

回答

2

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

这取决于你在多少台筛选您正在做的事情和您的群集中的机器数量。如果您的Cassandra表有1Tb的数据,并且您的查询在内存中获取100Gb的数据,假设有10台机器的集群,这意味着在内存中加载1Gb是可管理的,但查询永远不会是次分钟的。

现在,如果过滤器足以从Cassandra表中仅提取总共100Mb,则意味着10Mb /机器,并且可能具有秒级的延迟。

如何在Cassandra中尽早过滤数据?

  1. 使用新SASI secondary index(等待卡桑德拉3.5本周公布,因为2个严重的安全漏洞被发现)
  2. 使用DSE Search与Solr的早期筛选
  3. 使用Stratio Lucene secondary index
+0

谢谢@doanduyhai快速回复。我的问题是关于Cassandra和Spark。在这两种情况下,群集配置都是相同的。所以我不确定应该将数据从Cassandra加载到Spark以进行聚合\查询,还是Cassandra就足够了? – Ajeet

+1

卡桑德拉独自或卡桑德拉+火花没有太大的区别**如果你不过早过滤。使用Spark来过滤内存中的数据不会更快,因为您需要完全扫描Cassandra以获取数据** ** – doanduyhai

+0

我正在等待Spark 2.0 ... :)即将发布的“结构化流”如果我理解正确,那么Cassandra就不会被要求用于这个用例。它将提供直接在流上执行交互式查询的能力。 http://www.datanami.com/2016/02/25/spark-2-0-to-introduce-new-structured-streaming-engine/ – Ajeet

1

这会更好\更快

一如既往,取决于您希望能够运行哪种查询。卡桑德拉根据你如何设置你的表格来施加一些限制;例如,您不能在where子句中使用非索引列。如果您使用Spark inbetween加载数据,则可以执行Spark允许的任何查询。

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

因此,您可以使用Spark,但它会允许用户运行非常慢的查询。因此,您仍应该了解如何在Cassandra中构造数据,以增加预测压低Cassandra原始性能的可能性。

+0

谢谢@sgvd,这将有所帮助。 – Ajeet