Apache Livy создает исключение NullPointerException при вводе списка <String / Integer> - PullRequest
0 голосов
/ 07 ноября 2018

Я использую Apache Livy и пробую этот код для его запуска.

//App.java
public class App {
  public static void main(String[] args)
    throws IOException, URISyntaxException, InterruptedException, ExecutionException {
    String livyUrl = "http://MY_LIVY_SERVER:8998";
    String jar = "target\\livy_test-0.0.1-SNAPSHOT.jar";
    LivyClient client = new LivyClientBuilder().setURI(new URI(livyUrl)).build();
    try {
      client.uploadJar(new File(jar)).get();
      List<Integer> data = Arrays.asList(1,2,3,4,5,6,7,8,1,2);
      int result = client.submit(new Counter(data)).get();
      System.out.println("result of Counter: " + result);
    } finally {
      client.stop(true);
    }
  }
}

с Counter определяется как:

//Counter.java
public class Counter implements Job<Integer> {
  List<Integer> data;
  Counter(List<Integer> data) {
    this.data = data;
  }
  public Integer call(JobContext arg0) throws Exception {
    // TODO Auto-generated method stub
    JavaSparkContext jsc = arg0.sc();
    JavaRDD<Integer> rdd = jsc.parallelize(data);
    return (int) rdd.count();
  }
}

и я получаю эту ошибку

Exception in thread "main" java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.apache.livy.shaded.kryo.kryo.KryoException: java.lang.NullPointerException
Serialization trace:
data (com.tistory.rura6502.dev.livy_test.Counter)
org.apache.livy.shaded.kryo.kryo.serializers.ObjectField.read(ObjectField.java:125)
org.apache.livy.shaded.kryo.kryo.serializers.FieldSerializer.read(FieldSerializer.java:507)
........
java.lang.Thread.run(Thread.java:748)
    at org.apache.livy.client.http.JobHandleImpl.get(JobHandleImpl.java:198)
    at org.apache.livy.client.http.JobHandleImpl.get(JobHandleImpl.java:88)
    at com.tistory.rura6502.dev.livy_test.App.main(App.java:32)
Caused by: java.lang.RuntimeException: org.apache.livy.shaded.kryo.kryo.KryoException: java.lang.NullPointerException
Serialization trace:
data (com.tistory.rura6502.dev.livy_test.Counter)
org.apache.livy.shaded.kryo.kryo.serializers.ObjectField.read(ObjectField.java:125)
........

То же самое, когда я пытаюсь использовать List<Something like Integer or Custom Object> в качестве параметров. но если я использую только String или Integer или пользовательский объект, он работает.

Я думаю, что эта проблема связана с этой ссылкой (https://lists.apache.org/thread.html/%3CCA+iiNx8vnif6rmH7d06D4tcYgQPKkebyFLbv4goqgKca7v41DA@mail.gmail.com%3E), но никто не ответил на это.

...