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和数据集。
答案 0 :(得分:1)
如果您的数据框中包含您提到的列,则可以这样执行:
df.withColumn("set", explode(col("set"))).groupBy("identifier", "date").agg(collect_set("set"))