mongodb_hadoop 流处理 Python:-inputURI 未识别
我正在尝试用 Python 创建一个 MapReduce 应用程序,使用的是 mongodb_hadoop 连接器。我的集群上安装了 Hadoop 2.2.0。然后我安装了 mongodb_hadoop 连接器的版本 1.3.0。我还安装了 MongoDB,并创建了一个名为 hadoop_db 的测试数据库,里面有一个叫“integers”的集合,存放着整数值。
我的目标是统计每个整数出现的次数。我是根据这个 演示文稿 来进行工作的。
但是当我尝试执行这个任务时,得到了以下内容:
bin/hadoop jar share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar \
-mapper pyhadoop/pymongotest/mapper.py \
-reducer pyhadoop/pymongotest/reducer.py \
-inputURI mongodb://hadoopnode1/hadoop_db.integers \
-outputURI mongodb://hadoopnode1/hadoop_db.reducted_int
ERROR streaming.StreamJob: Unrecognized option: -inputURI
对于这个特定版本的连接器,正确的选项是什么呢?
1 个回答
2
我终于找到了正确的命令。把它放在这里,希望能帮助将来遇到同样问题的人:
bin/hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar \
-libjars $HADOOP_HOME/lib/mongo-hadoop-streaming-1.3.0.jar \
-input /tmp/in \
-output /tmp/out \
-inputformat com.mongodb.hadoop.mapred.MongoInputFormat \
-outputformat com.mongodb.hadoop.mapred.MongoOutputFormat \
-io mongodb \
-jobconf mongo.input.uri=mongodb://127.0.0.1:27017/hadoop_db.integers \
-jobconf mongo.output.uri=mongodb://127.0.0.1:27017/hadoop_db.reducted_int \
-jobconf stream.io.identifier.resolver.class=com.mongodb.hadoop.streaming.io.MongoIdentifierResolver \
-mapper mapper.py \
-reducer reducer.py \
-file $HADOOP_HOME/pyhadoop/pymongotest/mapper.py \
-file $HADOOP_HOME/pyhadoop/pymongotest/reducer.py