首页 文章

3个节点cassandra,其中一个是火花大师 - 解决地理空间数据或地理数据

提问于
浏览
1

我正在寻找方向:

我有一个带有纬度和经度数据的cassandra数据库 . 我需要搜索半径内的数据或点周围的方框坐标 . 我正在使用golang(gocql)客户端来查询Cassandra .

我需要对Spark和Cassandra有一些了解,因为这种接缝就像要走的路一样 .

以下假设是否正确;我有2个Cassandra节点(2个副本中的数据) .

  • 我应该安装一个额外的节点并在其上安装Spark,然后将其连接到包含数据的其他两个现有Cassandra节点(使用DataStax的Spark Connector) .

  • 两个现有的Cassandra节点是否需要在其上安装Spark worker才能与Spark Master节点配合使用?

  • 当Spark设置到位时,您是否查询(Scala)现有数据,然后将数据保存到Spark节点,然后使用gaoling(gocql)客户端进行查询?

欢迎任何指示

提前致谢

1 回答

  • 3

    地理空间搜索是一个非常深刻的主题 . 如果它只是进行你正在进行的搜索(而非批量/分析),我可以告诉你,你可能不想使用Spark . Spark不太擅长'搜索'数据 - 即使它是地理空间的 . 主要原因是Spark没有为有效搜索索引数据,并且每次要进行搜索时都必须创建作业/上下文(除非使用作业服务器) . 当您考虑面向用户的应用程序时间时,这需要永远 .

    Solr,弹性搜索和DataStax企业搜索(免责声明我为DataStax工作)都能够对Cassandra数据进行box和radius搜索,并且几乎可以实时搜索 .

    但是,要回答您的原始问题,如果您的大部分分析通常来自Cassandra数据,那么在与Cassandra相同的节点上运行Spark以获取数据位置可能是个好主意 . 好消息是Spark很好地扩展,所以如果你发现Spark从Cassandra那里获得太多资源,你可以简单地扩展(Cassandra和Spark) .

    然后我应该安装一个额外的节点并在其上安装Spark,然后将其连接到包含数据的其他两个现有Cassandra节点(使用DataStax的Spark Connector) .

    Spark是一个集群计算引擎,因此需要一组节点才能正常工作 . 如果您希望它尽可能高效,则需要在所有节点上安装它 .

    两个现有的Cassandra节点是否需要在其上安装Spark工作程序才能与Spark Master节点配合使用?

    我不喜欢't think they '对地方来说是一个好主意 . 在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/

相关问题