Flere ting at bemærke:
-
Det er ikke muligt at eksportere data fra MongoDB til Hadoop ved hjælp af Sqoop. Dette skyldes, at Sqoop bruger JDBC som giver et opkaldsniveau API til SQL-baseret database , men MongoDB er ikke en SQL-baseret database . Du kan se på «MongoDB Connector for Hadoop» at udføre dette arbejde. Connectoren er tilgængelig på GitHub . (Rediger:som du påpegede i din opdatering.)
-
Sqoop-eksporter udføres som standard ikke i en enkelt transaktion. I stedet, ifølge Sqoop-dokumenterne :
-
«MongoDB Connector for Hadoop» ser ikke ud til at tvinge den arbejdsgang, du beskriver. Ifølge dokumenterne:
-
Så vidt jeg forstår fra «MongoDB Connector for Hadoop»:eksempler , ville det være muligt at angive en
org.apache.hadoop.mapred.lib.db.DBOutputFormat
ind i dit Hadoop MapReduce-job for at skrive outputtet til en MySQL-database. Følg eksemplet fra konnektorlageret: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 );