我尝试使用Dataset的groupByKey方法。我无法弄清楚问题,无法找到 使用groupByKey 的任何工作示例。
所以让我指出一些观点,我在解决方案中寻找:
这是我做的:
contentDiv
我得到的错误:
答案 0 :(得分:3)
使用Java 8 lambda
df.groupByKey(row -> {
return new Bean(row.getString(0), row.getInt(1));
}, Encoders.bean(Bean.class));
使用MapFunction
df.groupByKey(new MapFunction<Row, Bean>() {
@Override
public Bean call(Row row) throws Exception {
return new Bean(row.getString(0), row.getInt(1));
}
}, Encoders.bean(Bean.class));
答案 1 :(得分:0)
出现此错误是因为groupByKey
有两个重叠的实现。这些方法之一将MapFunction
作为第一个参数,第二个方法将Function1
作为一个参数。您的lambda代码可以同时投射到这两个代码。因此,您应该明确声明您的意图。投射是一个简单的解决方案:
df.groupByKey(row -> (MapFunction<Row, Bean>) new Bean(row.getString(0), row.getInt(1))
, Encoders.bean(Bean.class));