В моем исходном файле у меня есть столбец как страна. Теперь моя задача - разместить записи определенной страны в отдельный файл, назвав его в этой стране. Возможно ли это сделать в Map-reduce.! Пожалуйста, поделитесь своими идеями относительно этого.Возможно ли иметь несколько выходных файлов для уменьшения карты?
0
A
ответ
3
Да, в hadoop вы можете использовать MultipleOutputFormat
, чтобы сделать именно это, используя его метод generateFileNameForKeyValue
.
Использование названий вашей страны в качестве ключей и записей в качестве значений должно работать именно так, как вам нужно.
3
Если вы используете новый API, вы должны изучить класс MultipleOutputs. В этом классе есть пример.
шаблон Использование для представления работы:
Job job = new Job(); FileInputFormat.setInputPath(job, inDir); FileOutputFormat.setOutputPath(job, outDir); job.setMapperClass(MOMap.class); job.setReducerClass(MOReduce.class); ... // Defines additional single text based output 'text' for the job MultipleOutputs.addNamedOutput(job, "text", TextOutputFormat.class, LongWritable.class, Text.class); // Defines additional sequence-file based output 'sequence' for the job MultipleOutputs.addNamedOutput(job, "seq", SequenceFileOutputFormat.class, LongWritable.class, Text.class); ... job.waitForCompletion(true); ...
Использование в Reducer:
String generateFileName(K k, V v) { return k.toString() + "_" + v.toString(); } public class MOReduce extends Reducer { private MultipleOutputs mos; public void setup(Context context) { ... mos = new MultipleOutputs(context); } public void reduce(WritableComparable key, Iterator values, Context context) throws IOException { ... mos.write("text", , key, new Text("Hello")); mos.write("seq", LongWritable(1), new Text("Bye"), "seq_a"); mos.write("seq", LongWritable(2), key, new Text("Chau"), "seq_b"); mos.write(key, new Text("value"), generateFileName(key, new Text("value"))); ... } public void cleanup(Context) throws IOException { mos.close(); ... } }
+4
Упомяните, пожалуйста, код выше? У каждого есть доступ к документации на акции. Люди приходят сюда для объяснений. –
Смежные вопросы
- 1. Несколько выходных файлов
- 2. Размер выходных разделов карты?
- 3. Возможно ли иметь несколько значений для узла?
- 4. Возможно ли иметь несколько партикулов для записи?
- 5. Возможно ли иметь несколько viewEngine.viewExtension
- 6. Возможно иметь несколько файлов высот запроса?
- 7. Xalt XSLT несколько выходных файлов?
- 8. Возможно ли иметь несколько файлов секретов в приложении rails?
- 9. EJB3: orm.xml: возможно ли иметь несколько файлов orm.xml?
- 10. Возможно ли иметь несколько файлов POM и TESTNG в проекте?
- 11. Возможно возвратить несколько результатов с функцией уменьшения?
- 12. Talend: несколько входных файлов для нескольких выходных файлов
- 13. Возможно иметь несколько FilterAttributes?
- 14. Возможно иметь несколько SqlCommand?
- 15. iPhone SDK - возможно ли иметь несколько заставки?
- 16. Возможно ли иметь несколько размеров настраиваемых наборов?
- 17. Возможно ли иметь несколько подключений к gdbserver?
- 18. Возможно ли иметь несколько «TestClass'es» в MSTest?
- 19. Возможно ли иметь несколько loadChildrens в маршрутизаторе?
- 20. Возможно ли иметь несколько UIView внутри UIPageViewController
- 21. Возможно ли иметь несколько кнопок управления. Tag
- 22. Возможно ли иметь несколько потоков STDIN?
- 23. Возможно ли иметь несколько масок с клипом?
- 24. Возможно ли иметь несколько переменных «request: URLRequest»
- 25. Возможно ли иметь несколько диалогов JOptionPane?
- 26. Возможно ли иметь несколько экземпляров сетки кендо
- 27. Возможно ли иметь несколько куч в java?
- 28. Возможно ли иметь несколько непрозрачности в окне?
- 29. Возможно ли иметь несколько экземпляров статических переменных
- 30. Возможно ли иметь несколько версий py3?
Вы пробовали 'тройник' клонировать выходной поток. – Marichyasana
No @Marichyasana На самом деле, я не знаю об этом. Можете ли вы разработать –
. Какую версию hadoop вы используете, и вы ищете старый API ('mapred') или новый API (' mapreduce') на основе? –