У меня есть потоковый проект Spark, написанный на Java 8, полностью рабочий код.
Теперь я пытаюсь использовать один из существующих DStream скажем streamA и использую mapToPair (someFeature ()) для него
Когда я запускаю свою программу, контроль за выполнением не входит в мою someFeature ()
Я знаю, это звучит странно.
Остальная часть кода выполняется как обычно, когда я использую streamA для выполнения какой-либо другой обработки.
Потратил почти день на то, чтобы это исправить, многие методики проб и ошибок не сработали.
Из-за этого блокировщика мои основные функциональные возможности будут затронуты.
Текущие сроки ближе, поэтому любая помощь очень ценится
Я пытался написать мою funcObjB () по-разному с точки зрения сигнатуры метода.
Никто из них не работал для меня.
Attempt 1:
JavaPairDStream<String, ObjA> streamA = getStreamObjA();
JavaPairDStream<String, ObjB> streamB = streamA.mapToPair(funcObjB())
.reduceByKey(someReducerB);
public static PairFunction<Tuple2<String, ObjA>, String, ObjB> funcObjB() {
return x ->
{
ObjA objA = x._2;
ObjB objB = new ObjB();
objB.setId(objA.getId());
objB.setName("someName");
return new Tuple2<>(objB.getId(), objB);
};
}
//rest of the below code executes as expected; where streamA is being used
JavaPairDStream<String, ObjC> streamC = streamA.mapToPair(funcObjC())
.reduceByKey(someReducerC);
--------------------------------------------------------------------------
Attempt 2:
JavaPairDStream<String, ObjA> streamA = getStreamObjA();
JavaPairDStream<String, ObjB> streamB = streamA.mapToPair(x -> {
log.debug("Hello world...");
ObjB objB = new ObjB();
return new Tuple2<>(x._2.getId(), objB);
}).reduceByKey(someReducer);
//rest of the below code executes as expected; where streamA is being used
JavaPairDStream<String, ObjC> streamC = streamA.mapToPair(funcObjC())
.reduceByKey(someReducerC);
Я ожидаю, что он выполнит мой код внутри преобразования mapToPair.