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