我正在寻找方向:
我有一个带有纬度和频率的cassandra数据库经度数据。我需要搜索半径内的数据或点周围的方框坐标。我正在使用golang(gocql)客户端来查询Cassandra。
我需要对Spark和Cassandra有所了解,因为这种接缝就像要走的路一样。
以下假设是否正确;我有2个Cassandra节点(2个副本中的数据)。
两个现有的Cassandra节点是否需要在其上安装Spark worker以与Spark Master节点配合使用?
当Spark设置到位时,您是否查询(Scala)现有数据,然后将数据保存到Spark节点,然后使用gaoling(gocql)客户端进行查询?
欢迎任何指示
提前致谢
答案 0 :(得分:3)
地理空间搜索是一个非常深刻的话题。如果它只是进行你正在进行的搜索(而非批量/分析),我可以告诉你,你可能不想使用Spark。 Spark不太擅长“搜索”数据 - 即使它是地理空间的。主要原因是Spark没有为有效搜索索引数据,并且每次要进行搜索时都必须创建作业/上下文(除非使用作业服务器)。当您考虑面向用户的应用程序时间时,这需要永远。
Solr,弹性搜索和DataStax企业搜索(免责声明我为DataStax工作)都能够对Cassandra数据进行盒式和半径搜索,并且几乎可以实时进行搜索。
要回答您的原始问题,如果您的大部分分析通常来自Cassandra数据,那么在与Cassandra相同的节点上运行Spark以获取数据位置可能是个好主意。好消息是Spark很好地扩展,所以如果你发现Spark从Cassandra那里获得了太多的资源,你可以简单地扩展(Cassandra和Spark)。
我应该安装一个额外的节点并在此安装Spark然后再安装 将它连接到包含其他两个现有的Cassandra节点 data(使用DataStax的Spark Connector)。
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/