Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Apache火花计数分组法_Scala_Apache Spark_Cassandra_Datastax - Fatal编程技术网

Scala Apache火花计数分组法

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

我想使用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.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)