如何根据多个键对数据集进行分组?

How to group a DataSet on multiple keys?

我有一个 Dataset 的 HashMap,我已经对其中一个键执行了 groupBy。现在我想在已经分组的 DataSet 上再执行一个(或多个)groupBy(即嵌套或链式 groupBy

例如,我想要这样的东西:

data.groupBy(_("a")).groupBy(_("b")).reducegroup {....}

我怎样才能做到这一点?

Flink 不支持嵌套groupBy。 但是,您可以对复合键进行分组

val data: (Int, Int, Long) = ???
val res = data.groupBy(0, 1).reduce(...)

在您的示例中,您使用的是不能在复合键中使用的 KeySelectors。相反,您可以定义一个 returns 两个键作为 Tuple2.

的 KeySelector
data.groupBy(d => (d("a"), d("b")) ).reduce(...)