Spark Cassandra迭代查询

时间:2015-07-12 03:01:01

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

我通过Spark Cassandra Connector应用以下内容:

val links = sc.textFile("linksIDs.txt")
links.map( link_id => 
{ 
val link_speed_records = sc.cassandraTable[Double]("freeway","records").select("speed").where("link_id=?",link_id)
average = link_speed_records.mean().toDouble
})

我想询问是否有办法更有效地应用上述查询序列,因为我总是改变的唯一参数是'link_id'。

'link_id'值是我的Cassandra'记录'表的唯一分区键。 我正在使用Cassandra v.2.0.13,Spark v.1.2.1和Spark-Cassandra Connector v.1.2.1

我在想是否有可能打开一个Cassandra会话以应用这些查询并仍然将'link_speed_records'作为SparkRDD。

1 个答案:

答案 0 :(得分:1)

使用joinWithCassandra方法使用RDD键从Cassandra表中提取数据。问题中给出的方法相对来说非常昂贵,并且作为可并行化的请求也不能很好地起作用。

https://github.com/datastax/spark-cassandra-connector/blob/master/doc/2_loading.md#performing-efficient-joins-with-cassandra-tables-since-12