给出一个包含列
的简单表id(分区),时间戳(聚类列)和值(长)
,获得每个id的值总和的最佳方法是什么?我尝试在查询中选择所有不同的ID,然后使用此id列表为每个id运行查询
SELECT sum(value)FROM mytable WHERE id =?
不幸的是我无法弄清楚如何编写spark工作,我不确定这是最好的方法。这是我得到了多远:
sc.cassandraTable("mykeyspace", "mytable")
.select("select distinct id")
.select("select sum(value)")
.where("id=?", ???)
我将非常感谢任何关于我应该如何进行的提示。
编辑:此处还有一个关于我目前如何进行聚合的工作示例:https://gist.github.com/Phil-Ba/72a7e762c8ab1ff1f3c9e8cff92cb223#file-cassandrasum-scala
表现虽然乏善可陈:/
答案 0 :(得分:0)
这称为group by。
可以用sql实现
select sum(value) from mytable group by id
它可以通过Spark中的函数调用实现
import org.apache.spark.sql.functions._
val df = sqlContext.table("mytable")
df.groupBy("id").agg(sum($"value"))