如何在多个键上对DataSet进行分组?

时间:2016-05-02 09:42:21

标签: scala apache-flink

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

例如,我想要这样的事情:

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

我将如何做到这一点?

1 个答案:

答案 0 :(得分:3)

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

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

在您的示例中,您使用的是不能在复合键中使用的KeySelectors。相反,您可以定义一个KeySelector,将两个键都返回为Tuple2

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