【问题标题】:spark-cassandra java.lang.NoClassDefFoundError: com/datastax/spark/connector/japi/CassandraJavaUtilspark-cassandra java.lang.NoClassDefFoundError: com/datastax/spark/connector/japi/CassandraJavaUtil
【发布时间】:2016-08-20 15:59:12
【问题描述】:
16/04/26 16:58:46 DEBUG ProtobufRpcEngine: Call: complete took 3ms
Exception in thread "main" java.lang.NoClassDefFoundError: com/datastax/spark/connector/japi/CassandraJavaUtil
        at com.baitic.mcava.lecturahdfssaveincassandra.TratamientoCSV.main(TratamientoCSV.java:123)
        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:731)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: com.datastax.spark.connector.japi.CassandraJavaUtil
        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
16/04/26 16:58:46 INFO SparkContext: Invoking stop() from shutdown hook
16/04/26 16:58:46 INFO SparkUI: Stopped Spark web UI at http://10.128.0.5:4040
16/04/26 16:58:46 INFO SparkDeploySchedulerBackend: Shutting down all executors
16/04/26 16:58:46 INFO SparkDeploySchedulerBackend: Asking each executor to shut down
16/04/26 16:58:46 INFO MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped!
16/04/26 16:58:46 INFO MemoryStore: MemoryStore cleared
16/04/26 16:58:46 INFO BlockManager: BlockManager stopped
16/04/26 16:58:46 INFO BlockManagerMaster: BlockManagerMaster stopped
16/04/26 16:58:46 INFO OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped!
16/04/26 16:58:46 INFO RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon.
16/04/26 16:58:46 INFO RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports.
16/04/26 16:58:46 INFO SparkContext: Successfully stopped SparkContext
16/04/26 16:58:46 INFO ShutdownHookManager: Shutdown hook called
16/04/26 16:58:46 INFO ShutdownHookManager: Deleting directory /srv/spark/tmp/spark-2bf57fa2-a2d5-4f8a-980c-994e56b61c44
16/04/26 16:58:46 DEBUG Client: stopping client from cache: org.apache.hadoop.ipc.Client@3fb9a67f
16/04/26 16:58:46 DEBUG Client: removing client from cache: org.apache.hadoop.ipc.Client@3fb9a67f
16/04/26 16:58:46 DEBUG Client: stopping actual client because no more references remain: org.apache.hadoop.ipc.Client@3fb9a67f
16/04/26 16:58:46 DEBUG Client: Stopping client
16/04/26 16:58:46 DEBUG Client: IPC Client (2107841088) connection to mcava-master/10.128.0.5:54310 from baiticpruebas2: closed
16/04/26 16:58:46 DEBUG Client: IPC Client (2107841088) connection to mcava-master/10.128.0.5:54310 from baiticpruebas2: stopped, remaining connections 0
16/04/26 16:58:46 INFO RemoteActorRefProvider$RemotingTerminator: Remoting shut down.

我做了这个简单的代码:

/  String pathDatosTratados="hdfs://mcava-master:54310/srv/hadoop/data/spark/DatosApp/medidasSensorTratadas.txt";
    String jarPath ="hdfs://mcava-master:54310/srv/hadoop/data/spark/original-LecturaHDFSsaveInCassandra-1.0-SNAPSHOT.jar";
     String jar="hdfs://mcava-master:54310/srv/hadoop/data/spark/spark-cassandra-connector-assembly-1.6.0-M1-4-g6f01cfe.jar";
    String jar2="hdfs://mcava-master:54310/srv/hadoop/data/spark/spark-cassandra-connector-java-assembly-1.6.0-M1-4-g6f01cfe.jar";
     String[] jars= new String[3];
     jars[0]=jarPath;
   jars[2]=jar;
     jars[1]=jar2;

    SparkConf conf=new SparkConf().setAppName("TratamientoCSV").setJars(jars);
    conf.set("spark.cassandra.connection.host", "10.128.0.5");
     conf.set("spark.kryoserializer.buffer.max","512");
     conf.set("spark.kryoserializer.buffer","256");
 //     conf.setJars(jars);
    JavaSparkContext sc= new  JavaSparkContext(conf);

     JavaRDD<String> input= sc.textFile(pathDatos);

我还将 cassandra 驱动器的路径放在 spark-default.conf 中

spark.driver.extraClassPath      hdfs://mcava-master:54310/srv/hadoop/data/spark/spark-cassandra-connector-java-assembly-1.6.0-M1-4-g6f01cfe.jar
spark.executor.extraClassPath    hdfs://mcava-master:54310/srv/hadoop/data/spark/spark-cassandra-connector-java-assembly-1.6.0-M1-4-g6f01cfe.jar

我也将标志 --jars 放到驱动程序的路径中,但我总是遇到同样的错误,我不明白为什么??

我在谷歌引擎工作

【问题讨论】:

    标签: apache-spark cassandra


    【解决方案1】:

    在提交应用时尝试添加包。

    $SPARK_HOME/bin/spark-submit --packages datastax:spark-cassandra-connector:1.6.0-M2-s_2.11 ....
    

    【讨论】:

    • 你使用哪个 scala 版本?是2.11吗?
    • 没有连接器是 2.10...我使用 spark 1.6.1 的最新版本
    • 然后我使用 sbt 连接器我只在 scala 2.10 版本中找到 .jar,因此,我找不到 java-assembly 连接器,但是当我搜索 CassandraUtils 时,我在 scala asambly 中找到了类...我不知道如何解决这个问题..当我在本地计算机上工作时一切正常,但在谷歌引擎中我无法解决这个问题..对我没有任何意义
    • 也许你可以使用 --packages datastax:spark-cassandra-connector:1.6.0-M2-s_2.10 那么?
    • 我尝试使用它,但我的序列化版本有问题,但我尝试使用 --packages datastax:spark-cassandra-connector:1.6.0-M1-s_2.10 它运行正常,但是当应用程序实现了在 cassandra 中保存数据的代码相同的错误输出...我不知道为什么 jvm 找不到 CassandraUtils 类我无法解决问题..真是令人沮丧
    【解决方案2】:

    我添加这个参数来解决这个问题:--packages datastax:spark-cassandra-connector:1.6.0-M2-s_2.10。

    【讨论】:

      【解决方案3】:

      我解决了这个问题...我制作了一个包含所有依赖项的胖 jar,不需要指出对 cassandra 连接器的引用,只需对胖 jar 的引用。

      【讨论】:

        【解决方案4】:

        我在我的 Java 程序中使用了 Spark,并且遇到了同样的问题。 问题是,因为我没有将 spark-cassandra-connector 包含到我的项目的 maven 依赖项中。

            <dependency>
                <groupId>com.datastax.spark</groupId>
                <artifactId>spark-cassandra-connector_2.11</artifactId>
                <version>2.0.7</version> <!-- Check actual version in maven repo -->
            </dependency>
        

        在那之后,我用我所有的依赖项构建了 fat jar - 它成功了! 也许它会帮助某人

        【讨论】:

          【解决方案5】:

          至少对于 3.0+ spark cassandra 连接器,the official assembly jar 适合我。它具有所有必要的依赖项。

          【讨论】:

            猜你喜欢
            • 2016-03-05
            • 2020-10-17
            • 2019-04-10
            • 2016-10-14
            • 2019-10-06
            • 2018-03-01
            • 2017-08-06
            • 2021-11-21
            • 2019-06-21
            相关资源
            最近更新 更多