Чтобы создать СДР в Spark Streaming, как мне оценить правильный интервал между партиями, чтобы мои СДР не были ни слишком короткими, ни слишком длинными?
открытый класс FirstSparkApplication {
public static void main(String[] args) throws InterruptedException {
SparkConf conf = new SparkConf().setMaster("local[*]").setAppName("FirstSparkApplication");
JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.seconds(5));
jssc.checkpoint("checkpoint_dir");
Logger.getRootLogger().setLevel(Level.ERROR);
JavaReceiverInputDStream<String> lines = jssc.socketTextStream("localhost", 9999);
lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator())
.mapToPair(line -> new Tuple2<>(line, 1))
.updateStateByKey((values, currentState) -> {
int sum = (int) currentState.or(0);
for (int i: values) {
sum += i;
}
return Optional.of(sum);
})
.print();
jssc.start();
jssc.awaitTermination();
jssc.close();
}
}
Я пытаюсь создать приложение Spark Streaming, которое получает данные из источника netcat и создает RDD. Однако я не знаю, как правильно создать интервал между партиями. Образец кода, который я привел здесь, подходит для простого использования, но в случае больших наборов данных мне нужно оценить наиболее оптимальный интервал для создания СДР. Итак, как мне это вычислить?