代码之家  ›  专栏  ›  技术社区  ›  rohanagarwal

cassandra中的集并

  •  0
  • rohanagarwal  · 技术社区  · 7 年前

    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和dataset。

    1 回复  |  直到 7 年前
        1
  •  1
  •   dumitru    7 年前

    如果您的数据帧包含您提到的列,您可以这样做:

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