Запустить проект с помощью Spark и maven

Я пытаюсь запустить свой класс java, который читает файл GML, и я использую для этого Tinkerpop и GMLReader, проблема в том, что когда я пытаюсь запустить его с помощью Spark, это дает мне исключение
Я написал простой код для тестирования:

 public static void main(String[] args) throws IOException {
    TinkerGraph graphs = new TinkerGraph();
    String in = "/home/salma/Desktop/celegansneural.gml";
    GMLReader.inputGraph(graphs, in);
    System.out.println(graphs);
 }

Команда, которую я использую для запуска класса:

root@salma-SATELLITE-C855-1EQ:/usr/local/spark# ./bin/spark-submit --class graph_example.WordCount --master local[2] ~/workspace/graph_example/target/graph_example-0.0.1-SNAPSHOT.jar

Ошибка :

Exception in thread "main" java.lang.NoClassDefFoundError:
 com/tinkerpop/blueprints/impls/tg/TinkerGraph
        at graph_example.WordCount.main(WordCount.java:51)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
     Caused by: java.lang.ClassNotFoundException: com.tinkerpop.blueprints.impls.tg.TinkerGraph
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 10 more
     Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties

person Salma Hakim    schedule 30.09.2016    source источник


Ответы (1)


Вы должны предоставить зависимость, содержащую реализацию TinkerGraph. Если я не ошибаюсь, вам нужно предоставить эта банка

Затем вы запускаете spark-submit как обычно, но с --jars /some/location/blueprints-core-2.6.0.jar

Это объясняется в официальной документации:

При использовании spark-submit файл jar приложения вместе с любыми jar-файлами, включенными в параметр --jars, будет автоматически перенесен в кластер.

person cheseaux    schedule 30.09.2016
comment
Работает спасибо (y) - person Salma Hakim; 30.09.2016