Zasadniczo potrzebujesz zmienić „klasę formatu wyjściowego” i masz na to kilka sposobów:
- Użyj MongoDB Connector dla Hadoop :http://docs.mongodb.org/ecosystem/tools /hadoop/?_ga=1.111209414.370990604.1441913822
- Zaimplementuj własny OutputFormat :https://hadoop. apache.org/docs/r2.7.0/api/org/apache/hadoop/mapred/OutputFormat.html (Zamiast używać FileOutputFormat).
- Wykonywanie zapytań mongodb wewnątrz reduktora zamiast pisać w kontekście MapREduce (nieładnie, możesz skończyć z pustymi plikami wyjściowymi w HDFS w zależności od OutputFormat określonego w sterowniku)
Moim zdaniem opcja 1 jest najlepszą opcją, ale nie używałem konektora MongoDB, aby stwierdzić, czy jest wystarczająco stabilne i funkcjonalne. Opcja 2 wymaga, abyś naprawdę zrozumiał, jak działa hadoop, aby uniknąć końca z wieloma otwartymi połączeniami i problemami z transakcjami i ponawianiem zadań hadoop.