当前位置: 首页 > 知识库问答 >
问题:

用Spark和maven运行项目[复制]

公孙宏远
2023-03-14

我正在尝试运行我的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

共有1个答案

苏鸿波
2023-03-14

必须提供包含TinkerGraph实现的依赖项。如果我没弄错的话,你需要提供这个罐子

然后像往常一样运行spark submit,但要使用--jars/some/location/blueprints-core-2.6.0。jar

官方文件对此进行了解释:

使用spark submit时,应用程序jar以及--jars选项中包含的任何jar将自动传输到集群。

 类似资料:
  • 我在网上搜索并找到了以下资源,我尝试了这些资源(请参见pom),但无法工作: 1)Spark用户邮件列表:http://apache-spark-user-list.1001560.n3.nabble.com/packaging-a-spark-job-using-maven-td5615.html 2)如何打包spark scala应用程序 我有一个简单的例子来演示这个问题,一个简单的1类项目(

  • 我看到了很多基于maven pom.xml构建文件的spring项目。还有一件奇怪的事情:在没有公共静态void main()方法的情况下构建项目。例如:https://github.com/geowarin/spring-mvc-security。在Spring.io的常用示例中,有一些类带有@SpringBootApplication注释和SpringApplication.Run(appli

  • 我有3个maven项目。项目1,项目2 为此,我在项目2 pom.xml文件中添加了这个 我的pom。Project3的xml是- 在项目3中,我添加了testng。xml文件来运行测试。现在如果我运行这个测试。xml文件,那么我所有的测试用例都成功运行了。如果我尝试使用maven测试运行测试用例,那么它会失败。 我已经在下面的pom文件中包含了testng.xml文件,以便使用maven运行te

  • 问题内容: 这是一个基本问题,我只是不太熟悉Maven多模块结构。说,我有一个Web应用程序。我想将一些模块连接到它(某些服务)。我是否需要仅将其中一个模块(依赖于其他模块)制作为一个Web应用程序,然后运行它?一开始我以为我可以运行整个项目,但是这个选项在我的IDE中是无效的(我现在正在使用NetBeans),这使我认为我应该运行一个类似于主模块的东西(在这种情况下为Web应用程序) )。是这样

  • 问题内容: 这个问题已经在这里有了答案 : Maven Run Project (6个答案) 5年前关闭。 我创建了一个使用Maven构建的简单控制台Java应用程序。有没有一种方法可以使用maven命令从命令行运行主类(不需要任何参数): 问题答案: 尝试使用maven-exec-plugin。从那里: 这将在JVM中运行您的类。您可以用来传递参数。 如果您使用的是Windows,请为和加上引号

  • 上周,我们的团队决定从Netbean迁移到Eclipse,因为我们开发了一些只能在Eclipse上运行的新插件。 首先,项目开始使用来自pom的my maven插件