Scala Apache火花计数分组法
我想使用Datastax和Spark获得Cassandra表中特定列(列“a”)的值和计数列表,但我在确定执行该请求的正确方法时遇到了困难 我基本上是在尝试做与T-SQL相同的事情Scala Apache火花计数分组法,scala,apache-spark,cassandra,datastax,Scala,Apache Spark,Cassandra,Datastax,我想使用Datastax和Spark获得Cassandra表中特定列(列“a”)的值和计数列表,但我在确定执行该请求的正确方法时遇到了困难 我基本上是在尝试做与T-SQL相同的事情 SELECT a, COUNT(a) FROM mytable 我在Cassandra上使用datastax和spark尝试了以下方法 import com.datastax.spark.connector._ import org.apache.spark.sql.cassandra._ val rdd = sc
SELECT a, COUNT(a)
FROM mytable
我在Cassandra上使用datastax和spark尝试了以下方法
import com.datastax.spark.connector._
import org.apache.spark.sql.cassandra._
val rdd = sc.cassandraTable("mykeyspace", "mytable").select("a")
rdd.groupBy(row => row.getString("a")).count()
这看起来只是给了我a列中不同值的计数,但我更多的是在列出这些值和这些值的计数之后(所以val1:10…val2:5…val3:12…等等。我尝试了一些。收集和类似的;只是不知道如何获得列表;任何帮助都将不胜感激。这似乎是一个部分答案(它提供了正确的数据,但可能有更好的解决方案)
我假设有一个更好的解决方案,但这在获得结果方面似乎是可行的。下面的代码片段将获取名为“a”的分区键,并获取名为“column\u name”的列,并找到该列的计数数
val cassandraPartitionKeys = List("a")
val partitionKeyRdd = sc.parallelize(cassandraPartitionKeys)
val cassandraRdd = partitionKeyRdd.joinWithCassandraTable(keyspace,table).map(x => x._2)
cassandraRdd.map(row => (row.getString("column_name"),1)).countByKey().collect.foreach(println)
val cassandraPartitionKeys = List("a")
val partitionKeyRdd = sc.parallelize(cassandraPartitionKeys)
val cassandraRdd = partitionKeyRdd.joinWithCassandraTable(keyspace,table).map(x => x._2)
cassandraRdd.map(row => (row.getString("column_name"),1)).countByKey().collect.foreach(println)