Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es möglich, MongoDB-Daten zu lesen, mit Hadoop zu verarbeiten und in ein RDBS (MySQL) auszugeben?

Einige Dinge zu beachten:

  1. 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.)

  2. Sqoop-Exporte werden standardmäßig nicht in einer einzigen Transaktion durchgeführt. Stattdessen gemäß der Sqoop-Dokumentation :

  3. Der «MongoDB Connector for Hadoop» scheint den von Ihnen beschriebenen Workflow nicht zu erzwingen. Laut der Dokumentation:

  4. 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 );