注意すべき点:
-
Sqoopを使用してMongoDBからHadoopにデータをエクスポートすることはできません。これは、SqoopがJDBC を使用しているためです。 SQLベースのデータベースの呼び出しレベルのAPIを提供します 、ただし、MongoDBはSQLベースのデータベースではありません 。 «MongoDBConnectorforHadoop» をご覧ください。 この仕事をするために。コネクタは、GitHubでから入手できます 。 (編集:アップデートで指摘したとおりです。)
-
デフォルトでは、Sqoopのエクスポートは単一のトランザクションでは行われません。代わりに、Sqoopドキュメント によると :
-
«Hadoop用のMongoDBコネクタ»は、あなたが説明するワークフローを強制するようには見えません。ドキュメントによると:
-
実際、«MongoDBConnectorfor Hadoop»から理解できる限り、次のようになります。例 、
org.apache.hadoop.mapred.lib.db.DBOutputFormat
Hadoop MapReduceジョブに追加して、出力をMySQLデータベースに書き込みます。コネクタリポジトリの例に従います:job.setMapperClass( TokenizerMapper.class ); job.setCombinerClass( IntSumReducer.class ); job.setReducerClass( IntSumReducer.class ); job.setOutputKeyClass( Text.class ); job.setOutputValueClass( IntWritable.class ); job.setInputFormatClass( MongoInputFormat.class ); /* Instead of: * job.setOutputFormatClass( MongoOutputFormat.class ); * we use an OutputFormatClass that writes the job results * to a MySQL database. Beware that the following OutputFormat * will only write the *key* to the database, but the principle * remains the same for all output formatters */ job.setOutputFormatClass( DBOutputFormat.class );