Scala 如何在多个键上对数据集进行分组?

Scala 如何在多个键上对数据集进行分组?,scala,apache-flink,Scala,Apache Flink,我有一个HashMaps的数据集,我在其中一个键上执行了groupBy。现在,我想在已经分组的数据集上执行一个(或多个)groupBy(即嵌套或链式排序的groupBy) 例如,我想要这样的东西: data.groupBy(_("a")).groupBy(_("b")).reducegroup {....} 我如何才能做到这一点?Flink不支持嵌套的groupBy。 但是,您可以在组合键上分组 val data: (Int, Int, Long) = ??? val res = data.g

我有一个HashMaps的
数据集
,我在其中一个键上执行了
groupBy
。现在,我想在已经分组的
数据集上执行一个(或多个)
groupBy
(即嵌套或链式排序的
groupBy

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

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

我如何才能做到这一点?

Flink不支持嵌套的
groupBy
。 但是,您可以在组合键上分组

val data: (Int, Int, Long) = ???
val res = data.groupBy(0, 1).reduce(...)
在您的示例中,您使用的键选择器不能用于复合键。相反,您可以定义一个KeySelector,它以
元组2
的形式返回两个键

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

非常感谢@fabian hueske!这正是我想要的