Няколко неща, които трябва да се отбележат:
-
Експортирането на данни от MongoDB към Hadoop с помощта на Sqoop не е възможно. Това е така, защото Sqoop използва JDBC който предоставя API на ниво извикване за базирана на SQL база данни , но MongoDB не е SQL базирана база данни . Можете да разгледате «MongoDB конектор за Hadoop» да свърши тази работа. Конекторът е наличен в GitHub . (Редактиране:както посочвате в актуализацията си.)
-
Експортирането на Sqoop не се извършва в една транзакция по подразбиране. Вместо това, според документите на Sqoop :
-
Изглежда, че «MongoDB Connector for Hadoop» не налага работния процес, който описвате. Според документите:
-
Всъщност, доколкото разбирам от «MongoDB конектор за 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 );