Исходное значение countApprox() всегда возвращает одни и те же границы

#java #apache-spark #apache-spark-sql #bigdata

#java #apache-spark #apache-spark-sql #bigdata

Вопрос:

У меня есть метод для вычисления и отображения приблизительного количества строк в фрейме данных:

 public static void countApprox(String csvPath, long timeout, double confidence) {
        Dataset<Row> table = spark.read().csv(csvPath);
        final PartialResult<BoundedDouble> result = table.javaRDD().countApprox(timeout, confidence);
        System.out.println("init mean value: "   result.initialValue().mean()); //is always 0
        System.out.println("init value high: "   result.initialValue().high());  //is always infinity
        System.out.println("init value low: "   result.initialValue().low());   //is always 0
        new Thread(new Runnable() {
            public void run() {
                System.out.println("calculating final values...");
                long initTime = System.currentTimeMillis();
                System.out.println("final value high: "   result.getFinalValue().high()); 
                System.out.println("final value low: "   result.getFinalValue().low());
                double timeTaken = (System.currentTimeMillis() - initTime)/1000.0;
                System.out.println("time taken: "   timeTaken   " second(s)");
            }
        }).start();
    }
  

Проблема в том, что независимо от того, какие параметры я предоставляю для тайм-аута и достоверности (значение тайм-аута меньше фактического времени, затраченного на подсчет), результаты для initialValue низкие, средние и высокие значения всегда одинаковы: (0.0, 0.0, бесконечность).
Буду признателен за любую помощь в выяснении того, что я делаю неправильно.

Заранее спасибо!

Комментарии:

1. Время ожидания в миллисекундах, какие значения вы пробовали?

2. любое значение тайм-аута меньше времени, затраченного на фактический подсчет количества строк, всегда возвращает один и тот же результат. Например, если время, затраченное на подсчет количества строк, составляет 15000L мс, любое значение меньше 15000 дает тот же результат. любое значение, большее или равное 15000, дает фактическое значение count, которое одинаково для всех начальных и конечных максимумов, минимумов и средних значений.