【发布时间】:2017-07-30 02:39:07
【问题描述】:
我目前正在为一些分布式处理工具构建一个基准测试工具,并且在使用 Apache Flink 时遇到了一些问题。
设置很简单:LogPojo 是一个简单的 Pojo,包含三个字段(长日期、双精度值、字符串数据)。在列表中,我正在寻找具有最小“值”字段的 LogPojo。基本上相当于:
pojoList.stream().min(new LogPojo.Comp()).get().getValue();
我的 flink 设置如下:
public double processLogs(List<LogPojo> logs) {
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<LogPojo> logSet = env.fromCollection(logs);
double result = 0.0;
try {
ReduceOperator ro = logSet.reduce(new LogReducer());
List<LogPojo> c = ro.collect();
result = c.get(0).getValue();
} catch (Exception ex) {
System.out.println("Exception caught" + ex);
}
return result;
}
public class LogReducer implements ReduceFunction<LogPojo> {
@Override
public LogPojo reduce(LogPojo o1, LogPojo o2) {
return (o1.getValue() < o2.getValue()) ? o1 : o2;
}
}
结束于:
Exception in thread "main" java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet;
所以不知何故,它似乎无法应用 reduce 函数。我就是找不到,为什么。有什么提示吗?
【问题讨论】:
标签: java aggregate min reduce apache-flink