sql >> Databasteknik >  >> RDS >> Mysql

Är det möjligt att läsa MongoDB-data, bearbeta den med Hadoop och mata ut den till en RDBS (MySQL)?

Flera saker att notera:

  1. Det är inte möjligt att exportera data från MongoDB till Hadoop med Sqoop. Detta beror på att Sqoop använder JDBC som tillhandahåller ett API på anropsnivå för SQL-baserad databas , men MongoDB är inte en SQL-baserad databas . Du kan titta på «MongoDB Connector for Hadoop» att göra det här jobbet. Anslutningen är tillgänglig på GitHub . (Redigering:som du påpekade i din uppdatering.)

  2. Sqoop-exporter görs inte i en enda transaktion som standard. I stället, enligt Sqoop-dokumenten :

  3. «MongoDB Connector for Hadoop» verkar inte tvinga fram det arbetsflöde du beskriver. Enligt dokumenten:

  4. Såvitt jag förstår från «MongoDB Connector for Hadoop»:exempel , skulle det vara möjligt att ange en org.apache.hadoop.mapred.lib.db.DBOutputFormat i ditt Hadoop MapReduce-jobb för att skriva utdata till en MySQL-databas. Följer exemplet från anslutningsförrådet:

    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. Hitta det minsta oanvända numret i SQL Server

  2. Använd LIMIT för att paginera resultat i MySQL-fråga

  3. Paginering i SUB PHP

  4. Android SQLite Databas Unit Testing