地理空间搜索是一个非常深奥的话题。如果它只是进行您所追求的搜索(不是批处理/分析),我可以告诉您您可能不想使用 Spark。 Spark 并不擅长“搜索”数据——即使是地理空间数据。主要原因是 Spark 不会为高效搜索建立数据索引,并且每次您想要进行搜索时都必须创建一个作业/上下文(除非使用作业服务器)。当您考虑面向用户的应用程序时间时,这需要很长时间。
Solr、Elastic Search 和 DataStax Enterprise Search(我为 DataStax 工作的免责声明)都能够对 Cassandra 数据进行框式和半径搜索,并且可以近乎实时地进行。
不过,要回答您最初的问题,如果您的大部分分析通常来自 Cassandra 数据,那么最好在与 Cassandra 相同的节点上运行 Spark 以实现数据本地化。好消息是 Spark 可以很好地扩展,所以如果你发现 Spark 从 Cassandra 中占用了太多资源,你可以简单地扩展(Cassandra 和 Spark)。
我是否应该安装一个额外的节点并在此安装 Spark,然后
将其连接到其他两个现有 Cassandra 节点,其中包含
数据(使用 DataStax 的 Spark 连接器)。
Spark 是一个集群计算引擎,因此它需要一个节点集群才能正常工作。如果您希望它尽可能高效,则需要在所有节点上安装它。
现有的两个 Cassandra 节点是否需要 Spark 工作器
安装在它们上以与 Spark Master 节点一起使用?
我不认为他们“必须”拥有它们,但这对地方来说是个好主意。 academy.datastax.com 上有一个非常好的视频,展示了 spark cassandra 连接器如何将数据从 Cassandra 读取到 Spark。我想它会为你解决很多问题:https://academy.datastax.com/demos/how-spark-cassandra-connector-reads-data
当 Spark 设置到位后,您是否查询 (Scala) 现有的
数据,然后将数据保存到 Spark 节点上,然后查询这个
使用 gaoling(gocql) 客户端?
Spark-Cassandra 连接器可以与 Cassandra 和 Spark 进行通信。有一些方法,例如 saveToCassandra(),可以将数据写回 Cassandra,您的作业正在处理。然后,您可以像往常一样使用您的客户端。
在 academy.datastax.com 上有一些非常好的免费 Spark + Cassandra 教程。这也是一个很好的起点:http://rustyrazorblade.com/2015/01/introduction-to-spark-cassandra/