作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个奇怪的问题:当我在其他处理(BulkIteration)之前在数据集上使用 count() 时,apache flink 将只执行 count() 的计划并跳过我的其他操作。我在日志中找不到任何相关内容。
此外,这在我的 IDE 中不会发生。所有的操作都在那里进行。只有当我通过WebUI上传时,才会出现这种问题。
那么:这是一个普遍问题吗?我怎样才能解决这个问题而不必自己计算值计数?
谢谢!
更新:
该代码执行类似的操作(嗯,我知道,这个示例并不是为高效代码而设计的,但它显示了我的问题)。
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.aggregation.Aggregations;
import org.apache.flink.api.java.tuple.Tuple1;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
public class CountProblemExample {
public static void main(String[] args) throws Exception {
Random rnd = new Random();
int randomNumber = 100000 + rnd.nextInt(100000);
List<Double> doubles = new LinkedList<>();
for (int i = 0; i < randomNumber; i++) {
doubles.add(rnd.nextDouble());
}
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<Double> doubleDataSet = env.fromCollection(doubles);
final int count = (int)doubleDataSet.count(); // In the UI there the code stops further execution
DataSet<Double> avgSet = doubleDataSet
.map(new MapFunction<Double, Tuple1<Double>>() {
@Override
public Tuple1<Double> map(Double value) throws Exception {
return new Tuple1<>(value);
}
})
.aggregate(Aggregations.SUM, 0)
.map(new MapFunction<Tuple1<Double>, Double>() {
@Override
public Double map(Tuple1<Double> t) throws Exception {
double avg = 0;
if (count > 0) {
avg = t.f0 / count;
}
return avg;
}
});
double avg = avgSet
.collect()
.get(0);
System.out.println(avg);
}
}
最佳答案
您可能忘记调用ExecutionEnvironment.execute()
。在调用该方法之前,不会执行 DataSet 作业。
DataSet.count()
和 DataSet.collect()
内部也会触发执行。
关于java - Apache 弗林克 : When using count() on DataSet only this job will be executed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974043/
我是一名优秀的程序员,十分优秀!