Я храню файлы на HDFS в формате сжатия Snappy. Я бы хотел изучить эти файлы в локальной файловой системе Linux, чтобы убедиться, что процесс Hadoop, который их создал, выполнил правильно.Как читать сжатые файлы Snappy на HDFS без использования Hadoop?
Когда я копирую их локально и пытаюсь сжать их с помощью стандартного libarary Google, он сообщает мне, что в файле отсутствует идентификатор Snappy. Когда я пытаюсь обойти это, вставив идентификатор Snappy, он испортил контрольную сумму.
Что я могу сделать, чтобы прочитать эти файлы без необходимости писать отдельную программу Hadoop или передать ее через что-то вроде Hive?
Как это сделать программно в scala или java? – Bunder
Чтобы программно записать в файл Snappy, вам необходимо импортировать класс Snappy codec и получить экземпляр этого класса в качестве части настройки транслятора или редуктора. Вы должны передать свой выходной поток через функцию «createOutputStream» кодека, чтобы получить закодированный выходной поток. Вот фрагмент. Чтение одинаково в обратном порядке codec = (CompressionCodec) ReflectionUtils.newInstance (codecClass, conf); fileOut = fs.create (targetPath, false); thiswriter = new LineRecordWriter (новый DataOutputStream (codec.createOutputStream (fileOut))); –