Я использую 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), но никто не ответил на это.