Várias coisas a serem observadas:
-
Não é possível exportar dados do MongoDB para o Hadoop usando Sqoop. Isso ocorre porque o Sqoop usa JDBC que fornece uma API de nível de chamada para banco de dados baseado em SQL , mas o MongoDB não é um banco de dados baseado em SQL . Você pode ver o «MongoDB Connector for Hadoop» para fazer este trabalho. O conector está disponível no GitHub . (Edit:como você aponta em sua atualização.)
-
As exportações Sqoop não são feitas em uma única transação por padrão. Em vez disso, de acordo com os documentos Sqoop :
-
O «MongoDB Connector for Hadoop» não parece forçar o fluxo de trabalho que você descreve. De acordo com os documentos:
-
De fato, pelo que entendi do «MongoDB Connector for Hadoop»:exemplos , seria possível especificar umorg.apache.hadoop.mapred.lib.db.DBOutputFormat
em seu trabalho Hadoop MapReduce para gravar a saída em um banco de dados MySQL. Seguindo o exemplo do repositório do 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 );