Aje*_*eet 5 cassandra apache-spark spark-streaming spark-dataframe
我正在为“大数据(空间数据)的实时渲染”应用程序。借助Spark Streaming + Spark SQL + WebSocket,我能够在仪表板上呈现预定义的查询。但是我想通过交互式查询和临时查询来获取数据。
为此,我尝试使用“ Spark Streaming + Cassandra”实现它。这些查询需要聚合并过滤大量数据。
我是Cassandra和Spark的新手,所以我对以下方法感到困惑,这种方法会更好\更快:
卡桑德拉(Cassandra)会足够快地给出实时结果吗?或者我应该从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"
Run Code Online (Sandbox Code Playgroud)
任何意见或建议,将不胜感激。谢谢,
感谢@doanduyhai建议使用SASI二级索引,它确实产生了很大的变化。
Cassandra 的速度足以实时给出结果吗?或者我应该从 Cassandra 创建一个 RDD 来对其执行交互式查询。
这取决于您预先进行的过滤程度以及集群中的计算机数量。如果您的 Cassandra 表有 1Tb 的数据,并且您查询在内存中获取 100Gb 的数据,假设集群有 10 台机器,这意味着在内存中加载 1Gb 是可以管理的,但查询永远不会是亚分钟的。
现在,如果您进行足够的过滤,仅从 Cassandra 表中获取总共 100Mb 的数据,则意味着每台机器 10Mb,并且可能会有秒级的延迟。
如何在 Cassandra 中尽早过滤数据?
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |