使用Spark Cassandra Connector

时间:2017-12-29 19:14:37

标签: apache-spark cassandra datastax

我是Spark和Scala的新手,我通过数据交换开源使用spark-shell访问Cassandra connector

使用此命令:

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]

我不知道这种转变是否仅适用于数据存储企业;我无法找到更多相关信息。

更多详情:

  • Java 1.8.0_151
  • Spark 2.2.1
  • Scala 2.11
  • Cassandra 3.11.1

1 个答案:

答案 0 :(得分:0)

确定。我已经通过这种方式解决了问题:

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)]

谢谢。