Varias cosas a tener en cuenta:
-
No es posible exportar datos de MongoDB a Hadoop usando Sqoop. Esto se debe a que Sqoop usa JDBC que proporciona una API de nivel de llamada para base de datos basada en SQL , pero MongoDB no es una base de datos basada en SQL . Puede consultar el «MongoDB Connector for Hadoop» para hacer este trabajo. El conector está disponible en GitHub . (Editar:como señalas en tu actualización).
-
Las exportaciones de Sqoop no se realizan en una sola transacción por defecto. En cambio, según los documentos de Sqoop :
-
El «Conector MongoDB para Hadoop» no parece forzar el flujo de trabajo que describe. Según los documentos:
-
De hecho, según tengo entendido del «MongoDB Connector for Hadoop»:ejemplos , sería posible especificar un
org.apache.hadoop.mapred.lib.db.DBOutputFormat
en su trabajo Hadoop MapReduce para escribir el resultado en una base de datos MySQL. Siguiendo el ejemplo del repositorio del conector: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 );