Функция внутри mapToPair не выполняется, искра пропускает обработку - PullRequest
0 голосов
/ 08 января 2019

У меня есть потоковый проект 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.

...