Flera saker att notera:
-
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.)
-
Sqoop-exporter görs inte i en enda transaktion som standard. I stället, enligt Sqoop-dokumenten :
-
«MongoDB Connector for Hadoop» verkar inte tvinga fram det arbetsflöde du beskriver. Enligt dokumenten:
-
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 );