Několik věcí k poznámce:
-
Export dat z MongoDB do Hadoop pomocí Sqoop není možný. Je to proto, že Sqoop používá JDBC který poskytuje rozhraní API na úrovni volání pro databázi založenou na SQL , ale MongoDB není databáze založená na SQL . Můžete se podívat na «Konektor MongoDB pro Hadoop» dělat tuto práci. Konektor je k dispozici na GitHubu . (Upravit:jak uvádíte ve své aktualizaci.)
-
Exporty Sqoop se ve výchozím nastavení neprovádějí v jedné transakci. Místo toho podle dokumentů Sqoop :
-
Zdá se, že «MongoDB Connector for Hadoop» nevynucuje pracovní postup, který popisujete. Podle dokumentů:
-
Ve skutečnosti, pokud jsem pochopil z "Konektor MongoDB pro Hadoop":příklady , bylo by možné zadat
org.apache.hadoop.mapred.lib.db.DBOutputFormat
do vaší úlohy Hadoop MapReduce zapsat výstup do databáze MySQL. Podle příkladu z úložiště konektorů: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 );