我有一个用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转换内执行我的代码。