Spark-cassandra连接器:选择键列表

时间:2015-07-03 14:31:28

标签: scala cassandra apache-spark spark-cassandra-connector

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

我有一个非常高的Key系列键值对。我还有一个RDD的密钥,我想从CF中选择

我想做的事情就像是

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 Context会导致NPE。我可以从完整的tallTable中创建一个RDD,然后加入id,但这是一个非常慢的操作,我想避免它。

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

1 个答案:

答案 0 :(得分: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开始提供,因此我建议您升级。