我是Spark和Scala的新手,我正在通过datastax开源connector使用spark-shell访问Cassandra
使用此命令:
sc.cassandraTable("keyspace","table")
.select("gender","name")
.mapValues(v => v.get())
.lookup("Male")
并得到此错误:
error: value mapValues is not a member of com.datastax.spark.connector.rdd.CassandraTableScanRDD[com.datastax.spark.connector.CassandraRow]
我不知道这种转换是否仅适用于datastax企业;我无法找到更多相关信息。
更多细节:
好。我用这种方式解决了问题,使用了问题中的评论:
sc.cassandraTable[(String,String)]("keyspace","table")
.where("gender = 'Male'")
.select("gender","name")
.map{case (k,v) => (v,1)}
.reduceByKey{case (v,count) => count + count}
.collect.foreach(println)
解决方案的关键是Spark中Cassandra Row和Scala类型之间的类型转换cassandraTable[(String,String)]
。
谢谢。