public static final @Nullable Tuple4<Long, Long, Long, Long> contentSizeStats( JavaRDD<ApacheAccessLog> accessLogRDD) { JavaDoubleRDD contentSizes = accessLogRDD.mapToDouble(new GetContentSize()).cache(); long count = contentSizes.count(); if (count == 0) { return null; } Object ordering = Ordering.natural(); final Comparator<Double> cmp = (Comparator<Double>)ordering; return new Tuple4<>(count, contentSizes.reduce(new SumReducer()).longValue(), contentSizes.min(cmp).longValue(), contentSizes.max(cmp).longValue()); }
@Test public void reduceOnJavaDoubleRDD() { JavaDoubleRDD rdd = sc.parallelizeDoubles(Arrays.asList(1.0, 2.0, 3.0, 4.0)); double sum = rdd.reduce((v1, v2) -> v1 + v2); assertEquals(10.0, sum, 0.001); }
@Test public void reduceOnJavaDoubleRDD() { JavaDoubleRDD rdd = sc.parallelizeDoubles(Arrays.asList(1.0, 2.0, 3.0, 4.0)); double sum = rdd.reduce((v1, v2) -> v1 + v2); assertEquals(10.0, sum, 0.001); }
@Test public void reduceOnJavaDoubleRDD() { JavaDoubleRDD rdd = sc.parallelizeDoubles(Arrays.asList(1.0, 2.0, 3.0, 4.0)); double sum = rdd.reduce((v1, v2) -> v1 + v2); assertEquals(10.0, sum, 0.001); }
@Override public double reduce(double zeroValue, @NonNull SerializableDoubleBinaryOperator operator) { if (doubleStream.isEmpty()) { return zeroValue; } return zeroValue + doubleStream.reduce((d1, d2) -> { Configurator.INSTANCE.configure(configBroadcast.value()); return operator.applyAsDouble(d1, d2); }); }
@Override public OptionalDouble reduce(@NonNull SerializableDoubleBinaryOperator operator) { if (doubleStream.isEmpty()) { return OptionalDouble.empty(); } return OptionalDouble.of(doubleStream.reduce((d1, d2) -> { Configurator.INSTANCE.configure(configBroadcast.value()); return operator.applyAsDouble(d1, d2); })); }