为什么我的自定义函数的调用方法中的println语句没有出现在日志中?

时间:2017-05-26 13:05:33

标签: java apache-spark apache-spark-2.0

我的方法: -

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>

1 个答案:

答案 0 :(得分:0)

这里可能存在两个问题:

  1. call没有打印出消息
  2. call确实已被调用,但您不会查看正确的日志。
  3. 您确实看到了一些消息,因为具有该功能的管道已经实例化(准备执行),但是当您没有触发任何操作时,您看不到来自内部的消息。情况就是这样。

    至于另一个可能的问题,我说你看错了日志。您应该查看函数运行的执行程序日志。情况就是如此。