Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark:java.lang.NoClassDefFoundError:com/mongodb/hadoop/MongoInputFormat_Java_Maven_Hadoop_Apache Spark_Spark Streaming - Fatal编程技术网

Spark:java.lang.NoClassDefFoundError:com/mongodb/hadoop/MongoInputFormat

Spark:java.lang.NoClassDefFoundError:com/mongodb/hadoop/MongoInputFormat,java,maven,hadoop,apache-spark,spark-streaming,Java,Maven,Hadoop,Apache Spark,Spark Streaming,我正在尝试使用mongohadoopconnector使用spark从mongodb读取数据 我尝试了不同版本的hadoop mongo连接器jar,但仍然出现了这个错误 编译期间没有错误 我能做些什么来解决这个问题 提前谢谢 Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/hadoop/MongoInputFormat at com.geekcap.javaworld.wordcount.Mo

我正在尝试使用
mongohadoop
connector使用spark从
mongodb
读取数据

我尝试了不同版本的hadoop mongo连接器jar,但仍然出现了这个错误

编译期间没有错误

我能做些什么来解决这个问题

提前谢谢

Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/hadoop/MongoInputFormat
    at com.geekcap.javaworld.wordcount.Mongo.main(Mongo.java:47)
Caused by: java.lang.ClassNotFoundException: com.mongodb.hadoop.MongoInputFormat
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more
我的代码

     import com.mongodb.hadoop.BSONFileOutputFormat;
    import com.mongodb.hadoop.MongoInputFormat;
    import com.mongodb.hadoop.MongoOutputFormat;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.LinkedList;
    import java.util.Queue;

    import org.apache.hadoop.conf.Configuration;
    import org.apache.spark.SparkConf;
    import org.apache.spark.api.java.JavaPairRDD;
    import org.apache.spark.api.java.JavaRDD;
    import org.apache.spark.api.java.JavaSparkContext;
    import org.apache.spark.api.java.function.FlatMapFunction;
    import org.bson.BSONObject;

public class MongoTest {
    // Set configuration options for the MongoDB Hadoop Connector.
public static void main(String[] args) {
 SparkConf conf = new SparkConf().setMaster("local").setAppName("App1");

    JavaSparkContext sc = new JavaSparkContext(conf);

    Configuration mongodbConfig;
    mongodbConfig = new Configuration();

    mongodbConfig.set("mongo.job.input.format", "com.mongodb.hadoop.MongoInputFormat");
    mongodbConfig.set("mongo.input.uri","mongodb://localhost:27017/MyCollectionName.collection");


    JavaPairRDD<Object, BSONObject> documents = sc.newAPIHadoopRDD(
            mongodbConfig, // Configuration
            MongoInputFormat.class, // InputFormat: read from a live cluster.
            Object.class, // Key class
            BSONObject.class // Value class
    );

    documents.saveAsTextFile("b.txt");
  }
 }
import com.mongodb.hadoop.BSONFileOutputFormat;
导入com.mongodb.hadoop.MongoInputFormat;
导入com.mongodb.hadoop.MongoOutputFormat;
导入java.util.array;
导入java.util.Collections;
导入java.util.LinkedList;
导入java.util.Queue;
导入org.apache.hadoop.conf.Configuration;
导入org.apache.spark.SparkConf;
导入org.apache.spark.api.java.javapairdd;
导入org.apache.spark.api.java.JavaRDD;
导入org.apache.spark.api.java.JavaSparkContext;
导入org.apache.spark.api.java.function.FlatMapFunction;
导入org.bson.BSONObject;
公共类MongoTest{
//设置MongoDB Hadoop连接器的配置选项。
公共静态void main(字符串[]args){
SparkConf conf=new SparkConf().setMaster(“本地”).setAppName(“App1”);
JavaSparkContext sc=新的JavaSparkContext(conf);
配置mongodbConfig;
mongodbConfig=新配置();
mongodbConfig.set(“mongo.job.input.format”、“com.mongodb.hadoop.MongoInputFormat”);
mongodbConfig.set(“mongo.input.uri”mongodb://localhost:27017/MyCollectionName.collection");
javapairdd documents=sc.newAPIHadoopRDD(
mongodbConfig,//配置
MongoInputFormat.class,//InputFormat:从活动群集读取。
Object.class,//键类
BSONObject.class//值类
);
documents.saveAsTextFile(“b.txt”);
}
}
pom.xml依赖项:

    <!-- Import Spark -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>1.4.0</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver</artifactId>
        <version>3.0.4</version>
    </dependency>
    <dependency>
        <groupId>hadoopCom</groupId>
        <artifactId>com.sample</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>/home/sys6002/NetBeansProjects/WordCount/lib/hadoop-common-2.7.1.jar</systemPath>
    </dependency>

       <dependency>
        <groupId>hadoopCon1</groupId>
        <artifactId>com.sample1</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>/home/sys6002/Downloads/mongo-hadoop-core-1.3.0.jar</systemPath>
    </dependency>
</dependencies>


org.apache.spark
spark-core_2.11
1.4.0
朱尼特
朱尼特
4.11
测试
org.mongodb
mongodb驱动程序
3.0.4
hadoopCom
com.sample
1
系统
/home/sys6002/NetBeansProjects/WordCount/lib/hadoop-common-2.7.1.jar
hadoopCon1
com.sample1
1
系统
/home/sys6002/Downloads/mongo-hadoop-core-1.3.0.jar

经过几次尝试和更改后,这项功能得以实现

   <dependencies>
              <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>1.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>1.5.1</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb.mongo-hadoop</groupId>
            <artifactId>mongo-hadoop-core</artifactId>
            <version>1.4.1</version>
        </dependency>
    </dependencies>

org.apache.spark
spark-sql_2.11
1.5.1
org.apache.spark
spark-core_2.11
1.5.1
log4j
log4j
1.2.14
org.mongodb.mongo-hadoop
mongo hadoop内核
1.4.1
Java代码

  Configuration conf = new Configuration();
    conf.set("mongo.job.input.format", "com.mongodb.hadoop.MongoInputFormat");
    conf.set("mongo.input.uri", "mongodb://localhost:27017/databasename.collectionname");
    SparkConf sconf = new SparkConf().setMaster("local").setAppName("Spark UM Jar");

    JavaRDD<User> UserMaster = sc.newAPIHadoopRDD(conf, MongoInputFormat.class, Object.class, BSONObject.class)
            .map(new Function<Tuple2<Object, BSONObject>, User>() {
                @Override
                public User call(Tuple2<Object, BSONObject> v1) throws Exception {
                    //return User
                }

            }
Configuration conf=new Configuration();
conf.set(“mongo.job.input.format”、“com.mongodb.hadoop.MongoInputFormat”);
conf.set(“mongo.input.uri”mongodb://localhost:27017/databasename.collectionname");
SparkConf sconf=new SparkConf().setMaster(“本地”).setAppName(“Spark UM Jar”);
JavaRDD UserMaster=sc.newAPIHadoopRDD(conf,MongoInputFormat.class,Object.class,BSONObject.class)
.map(新函数(){
@凌驾
公共用户调用(tuple2v1)引发异常{
//返回用户
}
}

您是如何运行该代码的?@kucing\u terbang,使用netbeans,您可以在运行代码时显式设置类路径以包含这两个jar。由于
系统的
作用域类似于
@kucing\u terbang提供的作用域
,我如何在maven项目中设置它?我知道在使用NBean的普通java项目中这样做,但不知道w到maven。请帮助我做这件事,就像你在普通java项目上做的那样。只需在
run
选项卡上添加jar,然后再次尝试运行。你可以检查此链接