MongoDB Hadoop连接器流媒体未运行

MongoDB Hadoop连接器流媒体未运行,mongodb,hadoop,hadoop-streaming,mongodb-hadoop,Mongodb,Hadoop,Hadoop Streaming,Mongodb Hadoop,我想启动MongoDB Hadoop流媒体连接器,因此我下载了一个兼容的Hadoop版本(2.2.0)(请参阅) 我克隆了git存储库mongohadoop,将build.sbt Hadoop版本更改为2.2: $ cat build.sbt name := "mongo-hadoop" organization := "org.mongodb" hadoopRelease in ThisBuild := "2.2" 然后我启动了: $ ./sbt package $ ./sbt mong

我想启动MongoDB Hadoop流媒体连接器,因此我下载了一个兼容的Hadoop版本(2.2.0)(请参阅)

我克隆了git存储库mongohadoop,将build.sbt Hadoop版本更改为2.2:

$ cat build.sbt
name := "mongo-hadoop"

organization := "org.mongodb"

hadoopRelease in ThisBuild := "2.2"
然后我启动了:

$ ./sbt package
$ ./sbt mongo-hadoop-streaming/assembly
$ cp core/target/mongo-hadoop-core_2.2.0-1.2.0.jar ../hadoop-2.2.0/lib/
$ cp mongo-2.7.3.jar ../hadoop-2.2.0/lib/ # Previously downloaded
$ cd ../hadoop-2.2.0/
$ ./bin/hadoop jar ../mongo-hadoop/streaming/target/mongo-hadoop-streaming-assembly-1.1.0.jar -mapper ...
我明白了:

Exception in thread "main" java.lang.ClassNotFoundException: com.mongodb.hadoop.streaming.MongoStreamJob
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at org.apache.hadoop.util.RunJar.main(RunJar.java:205)
我不明白为什么,我尝试了几乎所有应该支持流媒体的版本,但我总是得到同样的错误

我知道我在Mac OS X上。
谢谢

这实际上是一个bug,将在即将发布的版本中修复。已删除对该主类的需求,但未删除生成的清单。您可以通过从流式jar的清单中删除主类条目来调整jar。如果您在流媒体jar所在的目录中运行下面的脚本,它将为您修复该问题:

#! /bin/sh

M=META-INF/MANIFEST.MF
mkdir tmp
cd tmp
cp ../$1 .
JAR=$1

jar xf ${JAR}

sed -e '/Main-Class/d' ${M} >> ${M}.new 
mv ${M}.new  ${M}

jar cvfm ${JAR} ${M}

mv ${JAR} ..
cd ..
rm -r tmp

它不是超级漂亮,但应该能让你渡过难关。我们会尽快推出正式的1.2.1版本。这是jira的罚单:

谢谢,它解决了我的错误,但现在,不是com.mongodb.hadoop.streaming.MongoStreamJob,我得到
java.lang.ClassNotFoundException:
/bin/hadoop-jar..//mongo-hadoop/streaming/target/mongo-hadoop-streaming-assembly-1.1.0.jar-mapper..//mongo-hadoop/streaming/examples/enron/enron\u-map.js-reducer..//mongo-hadoop/streaming/examples/enron/enron/enron\u-reduce.js
我真的不知道如何使用java工作(这就是为什么我想使用流媒体:)我想你会想要-libjars而不是'jar'。请参见示例谢谢,但在这种情况下,您应该更新
streaming/examples/enron/*.sh
,因为它根本不是同一个命令。。。我不知道如何使2.2工作,所以我改为0.23,现在它可以工作了。我一定会仔细检查文档。谢谢你的提醒。