gpt4 book ai didi

apache-spark - Spark-cassandra-connector 如何确定在 Cassandra 上查询的范围?

转载 作者:行者123 更新时间:2023-12-02 02:06:05 25 4
gpt4 key购买 nike

我有一个三节点 Cassandra 集群,每个节点上都运行 Spark 执行程序。据我所知,为了扫描 Cassandra 数据库,SCC(Spark-Cassandra-Connector) 使用范围查询将标记放入 where 子句中。在不同节点上运行的 SCC 实例如何能够选择与在其他节点上运行的其他 SCC 实例不同的范围。例如,node1 上的 SCC 实例 A 选择范围 RangeA,那么 SCC 实例 BC 如何决定不选择范围使用相同的范围RangeA

他们互相交流吗?

最佳答案

驱动程序在执行操作时会生成分区列表,然后将其映射到 Spark 分区并在工作节点之间分发。分区的生成实际上取决于多种因素(您可以查看 ScanHelper.getPartitionGenerator function ):

  • WHERE条件是否包含分区键
  • 分区计数是否已指定

基于此,它返回 CassandraPartitionGenerator class 的实例即使用 partitions function 执行真正的分区生成从集群中获取 token 范围列表,如有必要,将这些 token 范围拆分为更小的 token 范围,按它们所属的节点对它们进行分组,等等。

然后,DataFrame 或 RDD API 使用该 CassandraPartitionGenerator 实例来获取将由 Spark 调度执行的 Spark 分区列表。最后,这些分区被 CqlTokenRange class 转换为 CQL where 子句。 .

附注拉塞尔·斯皮策 (Russel Spitzer) 还写了 blog post Spark 数据局部性和 Spark Cassandra 连接器 - 这对于理解也很有用。

关于apache-spark - Spark-cassandra-connector 如何确定在 Cassandra 上查询的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68430885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com