我通过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 Session来应用这些查询并仍然将'link_speed_records'作为SparkRDD .
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