mapValues与Spark Cassandra Connector

问题描述 投票:0回答:1

我是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企业;我无法找到更多相关信息。

更多细节:

  • Java 1.8.0_151
  • Spark 2.2.1
  • 比例2.11
  • 卡桑德拉3.11.1
apache-spark cassandra datastax
1个回答
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)]

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.