sql >> データベース >  >> RDS >> Mysql

MongoDBデータを読み取り、Hadoopで処理し、RDBS(MySQL)に出力することは可能ですか?

    注意すべき点:

    1. Sqoopを使用してMongoDBからHadoopにデータをエクスポートすることはできません。これは、SqoopがJDBC を使用しているためです。 SQLベースのデータベースの呼び出しレベルのAPIを提供します 、ただし、MongoDBはSQLベースのデータベースではありません«MongoDBConnectorforHadoop» をご覧ください。 この仕事をするために。コネクタは、GitHubでから入手できます 。 (編集:アップデートで指摘したとおりです。)

    2. デフォルトでは、Sqoopのエクスポートは単一のトランザクションでは行われません。代わりに、Sqoopドキュメント によると :

    3. «Hadoop用のMongoDBコネクタ»は、あなたが説明するワークフローを強制するようには見えません。ドキュメントによると:

    4. 実際、«MongoDBConnectorfor Hadoop»から理解できる限り、次のようになります。例 org.apache.hadoop.mapred.lib.db.DBOutputFormat Hadoop MapReduceジョブに追加して、出力をMySQLデータベースに書き込みます。コネクタリポジトリの例に従います:

      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 );
      


    1. ON DUPLICATEKEYUPDATEでの自動インクリメントが多すぎます

    2. JIRAデータベースからスプリントの開始日と終了日を抽出する最も簡単な方法は何ですか?

    3. 多対多の関係における問題

    4. MySQL Binlogサーバーの探索–リップル