Apache spark 使用cassandra spark连接器进行数据累加时,如何并行RDD工作?

Apache spark 使用cassandra spark连接器进行数据累加时,如何并行RDD工作?,apache-spark,cassandra,spark-cassandra-connector,Apache Spark,Cassandra,Spark Cassandra Connector,这是示例senario,我们在cassandra中有实时数据记录,我们希望在不同的时间范围内聚合数据。我编写的代码如下所示: val timeRanges = getTimeRanges(report) timeRanges.foreach { timeRange => val (timestampStart, timestampEnd) = timeRange val query = _sc.get.cassandraTable(report

这是示例senario,我们在cassandra中有实时数据记录,我们希望在不同的时间范围内聚合数据。我编写的代码如下所示:

 val timeRanges = getTimeRanges(report)
 timeRanges.foreach { timeRange =>
          val (timestampStart, timestampEnd) = timeRange

          val query = _sc.get.cassandraTable(report.keyspace, utilities.Helper.makeStringValid(report.scope)).
            where(s"TIMESTAMP > ?", timestampStart).
            where(s"VALID_TIMESTAMP <= ?", timestampEnd)
        ......do the aggregation work....
val timeRanges=getTimeRanges(报告)
timeRanges.foreach{timeRange=>
val(timestampStart,timestampEnd)=时间范围
val query=_sc.get.cassandraTable(report.keyspace、utilities.Helper.makeStringValid(report.scope))。
其中(s“TIMESTAMP>?”,TIMESTAMP开始)。

其中(s“VALID_TIMESTAMP使用joinWithCassandraTable函数。这允许您使用来自一个RDD的数据访问C*并提取记录,就像您的示例中一样

joinWithCassandraTable
利用java驱动程序执行单个 查询源RDD所需的每个分区,因此不需要 将请求或序列化数据。这意味着任何 RDD和Cassandra表可以在不做完整表的情况下预成型 扫描。当在两个共享 相同的分区键这将不需要在两个分区之间移动数据 在所有情况下,此方法都将使用源RDD 数据局部性的分区和放置


最后,我们使用union连接每个RDD并使它们并行化。

joinWithCassandraTable将连接两个表,但在我的代码中,只有一个源表,范围值是生成的值。它将1个RDD连接到1个表。不需要第一个RDD成为表。您试图访问的表的实际架构是什么?