我的方法: -
private static Function<ConsumerRecord<String, String>, StreamDataWrapper> createFunction(){
System.out.println("***** inside create function ******");
ObjectMapper mapper = new ObjectMapper();
Function<ConsumerRecord<String, String>, StreamDataWrapper> function = new Function<ConsumerRecord<String, String>, StreamDataWrapper>(){
public StreamDataWrapper call(ConsumerRecord<String, String> c) throws JsonParseException, JsonMappingException, IOException{
System.out.println("**** inside call of Function *******");
System.out.println("**** Consumer record "+c);
StreamData sd = mapper.readValue(c.value(), StreamData.class);
System.out.println("**** StreamData "+sd);
StreamDataWrapper sw = new StreamDataWrapper(sd);
System.out.println("**** StreamDataWrapper "+sw);
return sw;
}
};
System.out.println("***** End of create function ******");
return function;
}
我从另一个方法调用此createFunction()
,但问题是它是执行所有语句而不是statements inside call()
。这是我方法的output
。
O / P: -
***** inside create function ******
***** End of create function ******
它不打印其他输出语句。 以下是我正在使用的依赖
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.0.1</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
答案 0 :(得分:0)
我猜这里可能存在两个问题:
call
没有打印出消息call
确实已被调用,但您不会查看正确的日志。您确实看到了一些消息,因为具有该功能的管道已经实例化(准备执行),但是当您没有触发任何操作时,您看不到来自内部的消息。情况就是这样。
至于另一个可能的问题,我说你看错了日志。您应该查看函数运行的执行程序日志。情况就是如此。