Einige Dinge zu beachten:
-
Das Exportieren von Daten von MongoDB nach Hadoop mit Sqoop ist nicht möglich. Dies liegt daran, dass Sqoop JDBC verwendet die eine API auf Aufrufebene für SQL-basierte Datenbanken bereitstellt , aber MongoDB ist keine SQL-basierte Datenbank . Sie können sich den «MongoDB Connector for Hadoop» ansehen um diesen Job zu machen. Der Konnektor ist auf GitHub verfügbar . (Bearbeiten:wie Sie in Ihrem Update darauf hinweisen.)
-
Sqoop-Exporte werden standardmäßig nicht in einer einzigen Transaktion durchgeführt. Stattdessen gemäß der Sqoop-Dokumentation :
-
Der «MongoDB Connector for Hadoop» scheint den von Ihnen beschriebenen Workflow nicht zu erzwingen. Laut der Dokumentation:
-
In der Tat, soweit ich aus dem «MongoDB Connector for Hadoop» verstehe:Beispiele , wäre es möglich, einen
org.apache.hadoop.mapred.lib.db.DBOutputFormat
in Ihren Hadoop MapReduce-Job, um die Ausgabe in eine MySQL-Datenbank zu schreiben. Folgen Sie dem Beispiel aus dem Konnektor-Repository: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 );