1

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

我有一个非常高的键值对列族。而且我还有一个我想从该 CF 中选择的键的 RDD

我想做的是

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 读取一组密钥?

4

1 回答 1

1

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

// 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 开始提供,因此我建议您升级。

于 2015-07-03T23:33:12.713 回答