Kilka rzeczy do zapamiętania:
-
Eksportowanie danych z MongoDB do Hadoop przy użyciu Sqoop nie jest możliwe. Dzieje się tak, ponieważ Sqoop używa JDBC który zapewnia interfejs API na poziomie wywołań dla bazy danych opartej na SQL , ale MongoDB nie jest bazą danych opartą na SQL . Możesz spojrzeć na «MongoDB Connector for Hadoop» wykonać tę pracę. Oprogramowanie sprzęgające jest dostępne na GitHubie . (Edytuj:jak wskazujesz w swojej aktualizacji.)
-
Eksporty Sqoop nie są domyślnie realizowane w ramach jednej transakcji. Zamiast tego, zgodnie z dokumentacją Sqoop :
-
Wydaje się, że «MongoDB Connector for Hadoop» nie wymusza opisanego przez Ciebie przepływu pracy. Zgodnie z dokumentacją:
-
Rzeczywiście, o ile rozumiem z «MongoDB Connector for Hadoop»:przykłady , byłoby możliwe określenie
org.apache.hadoop.mapred.lib.db.DBOutputFormat
do zadania Hadoop MapReduce, aby zapisać dane wyjściowe w bazie danych MySQL. Zgodnie z przykładem z repozytorium oprogramowania sprzęgającego: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 );