【发布时间】:2020-04-17 02:53:34
【问题描述】:
JavaRDD提供的耗时方法-take()如何处理
Instant startInit = Instant.now();
JavaRDD<Foo> fooJavaRDD = listOfFoo.parallize.map(new Foo()).sortBy(a -> a.sortRule(), true, NoPartitions);
Instant stopInit = Instant.now();
Instant startTake = Instant.now();
List<Foo> fooList = fooJavaRDD.take(1);
Instant stopTake = Instant.now();
System.out.println("Init: " + Duration.between(startInit, stopInit).toMillis());
System.out.println("Take: " + Duration.between(startTake, stopTake).toMillis());
我得到的输出(以毫秒为单位):
Init: 417
Take: 1322
奇怪的是,parallizing、map和sorting都没有take()那么耗时。
也许还有另一种方法可以从 map() 中获取最佳结果?
【问题讨论】:
标签: java performance apache-spark optimization