我正在研究“大数据(空间数据)实时呈现”应用程序。 借助Spark Streaming + Spark SQL + WebSocket,我可以在仪表板上呈现预先定义的查询。但我想用交互式查询和特别查询来获取数据。Cassandra + Spark用于实时分析
为此我试图用“Spark Streaming + Cassandra”来实现它。这些查询需要对大量数据进行聚合和过滤。
我是新来卡桑德拉和火花,让我感到困惑的下面技术途径,这会更好\更快:
- 星火流 - >筛选(火花) - >保存卡桑德拉 - >互动查询 - > UI(控制板)
- 星火流 - >筛选(火花) - >保存到卡桑德拉 - >星火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二级索引,它真的造成了巨大的差异。
性能将很大程度上取决于您的表格的设计以及您需要阅读多少行来回答单个请求。如果您正在优化用户界面呈现的路径,那么将数据写入卡桑德拉的形状将会以最少的读数为您提供所需的信息。我不认为有没有一个普遍的答案没有考虑到应用程序的具体要求。 – maasg