Plusieurs choses à noter :
-
L'exportation de données de MongoDB vers Hadoop à l'aide de Sqoop n'est pas possible. En effet, Sqoop utilise JDBC qui fournit une API au niveau de l'appel pour la base de données basée sur SQL , mais MongoDB n'est pas une base de données basée sur SQL . Vous pouvez consulter le «MongoDB Connector for Hadoop» pour faire ce travail. Le connecteur est disponible sur GitHub . (Edit :comme vous le signalez dans votre mise à jour.)
-
Les exports Sqoop ne se font pas en une seule transaction par défaut. Au lieu de cela, selon les Documents Sqoop :
-
Le «MongoDB Connector for Hadoop» ne semble pas forcer le workflow que vous décrivez. D'après la documentation :
-
En effet, d'après ce que j'ai compris du «MongoDB Connector for Hadoop» :exemples , il serait possible de spécifier un
org.apache.hadoop.mapred.lib.db.DBOutputFormat
dans votre travail Hadoop MapReduce pour écrire la sortie dans une base de données MySQL. En suivant l'exemple du référentiel de connecteur :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 );