sql >> Database >  >> RDS >> Mysql

Is het mogelijk om MongoDB-gegevens te lezen, te verwerken met Hadoop en uit te voeren in een RDBS (MySQL)?

Verschillende dingen om op te merken:

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

  2. Sqoop-exports worden standaard niet in één transactie gedaan. In plaats daarvan, volgens de Sqoop docs :

  3. De «MongoDB Connector for Hadoop» lijkt de workflow die u beschrijft niet te forceren. Volgens de documenten:

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


  1. Dynamische cursor in opgeslagen procedure

  2. PostgreSQL configureren voor observeerbaarheid

  3. MySQL-query met voorwaardelijke instructie?

  4. Basistafel of weergave niet gevonden:1146 Tafel Laravel 5