Я довольно новичок в Spark Streaming, и я застреваю, пытаясь понять, как справиться с этой проблемой, так как я нашел много примеров для одиночных (K, V) пар, но что-то еще. Я был бы признателен за некоторую помощь, чтобы найти лучший подход, используя преобразования Spark с Java.Spark streaming уменьшить на несколько ключевых Java
Позвольте мне вкратце описать сценарий,
Цель состоит в том, чтобы получить коэффициент ошибок набора элементов в пределах временного окна.
Учитывая следующие входные,
(A, Error)
(B, Success)
(B, Error)
(B, Success)
(C, Success)
(C, Error)
Это будет агрегировать элементом, а затем статус (Element, (Number of Success, Number of Error))
. В этом случае результат преобразования будет,
(A, (0,1))
(B, (2,1))
(C, (1,1))
И, наконец, вычисление соотношения с использованием функции, такие как (I1, I2) -> i1/(I1 + I2).
(A, 100%)
(B, 33.3%)
(C, 50%)
Насколько я понимаю, результат будет дано reduceByKeyAndWindow() функции, например,
JavaPairDStream<String, Double> res =
pairs.reduceByKeyAndWindow(reduceFunc, Durations.seconds(30), Durations.seconds(1));
После обратного потока приложения, мои вопросы,
Как определить пару на JavaPairDStream с более чем одним значением или ключом (может быть, что-то вроде JavaPairDStream<String, Tuple2<Integer,Integer>>
)?
Какой наилучший способ для reduceFunc
получить пару с несколькими ключами?
Каков наилучший способ сопоставления исходного DStream (может быть, что-то вроде JavaDStream<Tuple2<String, String>> line = input.map(func)
)?
Заранее благодарю вас за помощь.