Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

É possível ler dados do MongoDB, processá-los com o Hadoop e enviá-los para um RDBS (MySQL)?


Várias coisas a serem observadas:

  1. 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.)

  2. 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 :

  3. O «MongoDB Connector for Hadoop» não parece forçar o fluxo de trabalho que você descreve. De acordo com os documentos:

  4. De fato, pelo que entendi do «MongoDB Connector for Hadoop»:exemplos , seria possível especificar um org.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 );