Spark-cassandra 连接器:select 键列表

Spark-cassandra connector: select list of keys

Cassandra 2.1,Spark 1.1,spark-cassandra-connector 1.1

我有一个非常高的键值对列族。我还有一个 RDD 键,我想从那个 CF

select

我想做的是

import com.datastax.spark.connector._                                    

val ids = ...

val pairs = id.map{
 id => sc.cassandraTable("cf", "tallTable")
        .select("the_key", "the_val")
        .where("the_key = ?", id)
 }

但是,在映射中引用 Spark 上下文会导致 NPE。我可以从完整的 tallTable 中创建一个 RDD,然后加入 id,但这是一个非常慢的操作,我想避免它。

有没有办法像这样从 Cassandra 读取一组密钥?

spark-cassandra 连接器提供了一种优化的方法来实现键的 RDD 与 Cassandra 的连接 table:

// Given a collection of ids
val ids = Seq(id,...)
// Make an RDD out of it
val idRdd = sc.parallelize(ids)
// join the ids with the cassandra table to obtain the data specific to those ids
val data = idRDD.joinWithCassandraTable("cf", "tallTable")

此功能从 spark-cassandra 连接器 v1.2 开始可用,因此我建议您升级。