Hadoop与mongoDB:NoClassDefFoundError MongoConfigUtil

时间:2016-05-18 03:34:06

标签: java mongodb hadoop mapreduce mongodb-hadoop

我正在学习如何使用mongodb数据作为输入在hadoop中编写map / reduce作业。所以我按照this示例,但我收到了以下错误:

dotnet run --server.urls=http://*:5000

我一直在寻找没有任何结果的时间。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

这意味着mongo-hadoop-core.jar在编译时可用,但在运行时不可用。

尝试使用classpath

中添加的依赖项jar运行应用程序

示例:java -cp mongo-hadoop-core.jar<++other dependencies> MainClass

编辑1

如果您正在使用hadoop shell

运行

通过执行classpath检查hadoop classpath它会在类路径中打印dir / jars。

如果从属jar不在类路径中,请使用classpath命令将它们添加到export中,然后执行hadoop jar yourjar.jar mainClass

编辑2

使用libjars选项

hadoop jar myjar.jar mainClass -libjars ${LIBJARS}

答案 1 :(得分:1)

我可以看到这个链接示例文件夹结构是maven。我无法在该链接中看到pom.xml。

我们可以将maven范围从provided设置为runtime

  1. 您需要编写assembly.xml(将您的应用程序库和相关依赖项打包到tar文件中)并需要将它从pom.xml引用到包mongo-hadoop-core.jar以及其他依赖项< strong> NOT 安装在群集中。
  2. export HADOOP_CLASSPATH=`hadoop classpath`:`hbase classpath`
    
    hadoop jar .... -cp $HADOOP_CLASSPATH MainClass
    

    如果你解压缩上面提到的tar文件,你可以参考类路径例如: hadoop jar .... ../lib/*主要类 其中lib文件夹包含所有依赖项,例如你的mongodb。

    1. 如果群集中安装了mongo db和相关组件,我们可以像下面的示例一样提及 classpath
    2. 另请参阅此答案他们如何使用libjars