火花查询cassandra的集合联盟

时间:2017-07-25 10:28:33

标签: java apache-spark cassandra apache-spark-dataset

cassandra中的表结构:

identifier, date, set(integer)

我想用Spark实现的是按标识符和日期对行进行分组,然后聚合所有集值。我将通过一个例子更加清楚:

原始数据:(考虑表示整数的字母)

id1, 05-05-2017, {a,b,c}
id1, 05-05-2017, {c,d}
id1, 26-05-2017, {a,b,c}
id1, 26-05-2017, {b,c}
id2, 26-05-2017, {a,b,c}
id2, 26-05-2017, {b,c,d}

输出:

id1, 05-05-2017, {a,b,c,d}
id1, 26-05-2017, {a,b,c}
id2, 26-05-2017, {a,b,c,d}

由于这是一个集合,我想在聚合结果中使用唯一值。我正在使用java和数据集。

1 个答案:

答案 0 :(得分:1)

如果您的数据框中包含您提到的列,则可以这样执行:

df.withColumn("set", explode(col("set"))).groupBy("identifier", "date").agg(collect_set("set"))