mapToPair内部的函数未执行,Spark跳过处理

时间:2019-01-08 16:21:57

标签: java apache-spark lambda java-8 spark-streaming

我有一个用Java 8编写的Spark流项目,完全可以运行。

现在,我尝试使用现有的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转换内执行我的代码。

0 个答案:

没有答案