mongoDB hadoop コネクタを使用して基本的な Spark の例を実行しようとしています。Hadoop バージョン2.6.0を使用しています。mongo-hadoop のバージョン1.3.1を使用しています。この Hadoop バージョンの jar を正確にどこに配置すればよいかわかりません。私が試した場所は次のとおりです。
- $HADOOP_HOME/libexec/share/hadoop/mapreduce
- $HADOOP_HOME/libexec/share/hadoop/mapreduce/lib
- $HADOOP_HOME/libexec/share/hadoop/hdfs
- $HADOOP_HOME/libexec/share/hadoop/hdfs/lib
コレクションを Hadoop にロードするために使用しているコードのスニペットを次に示します。
Configuration bsonConfig = new Configuration();
bsonConfig.set("mongo.job.input.format", "MongoInputFormat.class");
JavaPairRDD<Object,BSONObject> zipData = sc.newAPIHadoopFile("mongodb://127.0.0.1:27017/zipsdb.zips", MongoInputFormat.class, Object.class, BSONObject.class, bsonConfig);
jar がどこに配置されていても、次のエラーが発生します。
Exception in thread "main" java.io.IOException: No FileSystem for scheme: mongodb
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2584)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2630)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2612)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:370)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.addInputPath(FileInputFormat.java:505)
at org.apache.spark.SparkContext.newAPIHadoopFile(SparkContext.scala:774)
at org.apache.spark.api.java.JavaSparkContext.newAPIHadoopFile(JavaSparkContext.scala:471)
Hadoop ログに他のエラーは表示されません。構成に何かが欠けているか、Hadoop 2.6.0 がこのコネクタと互換性がないのではないかと思います。どんな助けでも大歓迎です。