Каков наилучший способ использования CombineFileInputFormat на gzip-файлах?Как использовать CombineFileInputFormat на gzip-файлах?
ответ
This статья поможет вам создать собственный Inputformat с помощью CombineFIleInputFOrmat для чтения и обработки файлов gzip. Ниже детали дадут вам представление о том, что нужно сделать.
Пользовательские InputFormat:
Создайте свой собственный combinefileinputformat почти такой же, как и у combinefileinputformat. Ключ должен быть нашим собственным классом записи, который будет содержать имя файла, смещение и значение будут фактическим содержимым файла. Необходимо установить issplittable в false (мы не хотим разделить файл). установите maxsplitsize на значение вашего требования. на основе этого значения Combinefilerecordreader решает количество разделов и создает экземпляр для каждого разделения. Вы должны создать свой собственный инструмент чтения записей, добавив к нему свою логику декомпрессии.
Пользовательские RecordReader:
Пользовательские Recordreader использует linereader и устанавливает ключ как имя файла, смещение и значение, как фактическое содержание файла. Если файл сжат, он распаковывает его и считывает. Вот выдержка для этого.
private void codecWiseDecompress(Configuration conf) throws IOException{
CompressionCodecFactory factory = new CompressionCodecFactory(conf);
CompressionCodec codec = factory.getCodec(path);
if (codec == null) {
System.err.println("No Codec Found For " + path);
System.exit(1);
}
String outputUri =
CompressionCodecFactory.removeSuffix(path.toString(),
codec.getDefaultExtension());
dPath = new Path(outputUri);
InputStream in = null;
OutputStream out = null;
fs = this.path.getFileSystem(conf);
try {
in = codec.createInputStream(fs.open(path));
out = fs.create(dPath);
IOUtils.copyBytes(in, out, conf);
} finally {
IOUtils.closeStream(in);
IOUtils.closeStream(out);
rlength = fs.getFileStatus(dPath).getLen();
}
}
Пользовательские Writable Класс:
Пара с именем файла, значение смещения
- 1. Как использовать CombineFileInputFormat в Hadoop?
- 2. Использование CombineFileInputFormat в Hadoop
- 3. Исправлены небольшие файлы (coalesce vs CombineFileInputFormat)
- 4. Использование CombineFileInputFormat для изображений (или BLOB)?
- 5. Hadoop: Как получить каждый путь к файлу в CombineFileInputFormat?
- 6. Hadoop: Использует ли CombineFileInputFormat для небольших файлов улучшение производительности?
- 7. CombineFileInputFormat запускает только одну карту всегда Hadoop 1.2.1
- 8. Как использовать переменную на FormulaR1C1
- 9. Как использовать hstore на Heroku
- 10. Как использовать onDraw на фрагменте?
- 11. Как использовать memcached на Win32?
- 12. Как использовать performSelector на блоке
- 13. Как использовать setImageUri() на Android
- 14. Как использовать mouseEvent на QGraphicsView
- 15. Как использовать SetOnMenuItemClickListener на Xamarin?
- 16. Как использовать json_decode на PHP
- 17. Как использовать композитор на окнах?
- 18. Как использовать UISwipeGestureRecognizer на UIButton?
- 19. Как использовать Swaggervel на Heroku?
- 20. Как использовать: проверено на переключателях
- 21. Как использовать блокировку на IList
- 22. Как использовать SSH на iPhone
- 23. , как использовать «hash_map» на окнах
- 24. Как использовать setVolume() на SoundCloud
- 25. Как использовать хелперы на WebGrid
- 26. Как использовать resizableImageWithCapInsets на UIImage?
- 27. Как использовать соединение на YII
- 28. Как использовать CIAffineTile на какао?
- 29. Как использовать lsd_slam на ROS?
- 30. Как использовать куст на hdfs?
@VigneshI Спасибо за ответ. Я уже рассмотрел этот вариант, и он не самый лучший, поскольку он может иметь побочный эффект от файлов, созданных на HDFS. Есть ли лучший способ сделать это, не распаковывая временные файлы. – user300313
@ VigneshI У вас есть решение для этого без временных файлов? – refaelos