mapValues with Spark Cassandra Connector



我对Spark和Scala很陌生,我正在使用spark-shell通过datastax开源连接器访问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企业;我无法找到有关此的更多信息。

更多详情:

  • Java 1.8.0_151
  • 火花 2.2.1
  • 斯卡拉 2.11
  • 卡桑德拉 3.11.1

好的。我已经用这种方式解决了,使用问题中的注释:

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

谢谢。

最新更新