Verschillende dingen om op te merken:
-
Het exporteren van gegevens van MongoDB naar Hadoop met Sqoop is niet mogelijk. Dit komt omdat Sqoop JDBC gebruikt die een API op oproepniveau biedt voor SQL-gebaseerde database , maar MongoDB is geen op SQL gebaseerde database . Je kunt de «MongoDB Connector for Hadoop» bekijken om dit werk te doen. De connector is beschikbaar op GitHub . (Bewerken:zoals je aangeeft in je update.)
-
Sqoop-exports worden standaard niet in één transactie gedaan. In plaats daarvan, volgens de Sqoop docs :
-
De «MongoDB Connector for Hadoop» lijkt de workflow die u beschrijft niet te forceren. Volgens de documenten:
-
Inderdaad, voor zover ik begrijp uit de «MongoDB Connector for Hadoop»:voorbeelden , zou het mogelijk zijn om een
org.apache.hadoop.mapred.lib.db.DBOutputFormat
in uw Hadoop MapReduce-taak om de uitvoer naar een MySQL-database te schrijven. Naar het voorbeeld van de connectorrepository: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 );