HDFS: использование HDFS API для добавления в SequenceFile - PullRequest
4 голосов
/ 08 апреля 2011

Я пытался создать и поддерживать файл последовательности в HDFS с использованием Java API без запуска задания MapReduce в качестве настройки для будущего задания MapReduce. Я хочу сохранить все свои входные данные для задания MapReduce в одном файле последовательности, но данные добавляются со временем в течение дня. Проблема в том, что если существует SequenceFile, следующий вызов просто перезапишет SequenceFile вместо добавления к нему.

// fs and conf are set up for HDFS, not as a LocalFileSystem
seqWriter = SequenceFile.createWriter(fs, conf, new Path(hdfsPath),
               keyClass, valueClass, SequenceFile.CompressionType.NONE);
seqWriter.append(new Text(key), new BytesWritable(value));
seqWriter.close();

Другая проблема заключается в том, что я не могу поддерживать файл моего собственного формата и преобразовать данные в SequenceFile в конце дня, поскольку задание MapReduce может быть запущено с использованием этих данных в любой момент.

Я не могу найти какой-либо другой вызов API для добавления к SequenceFile и поддержания его формата. Я также не могу просто объединить два файла SequenceFiles из-за необходимости форматирования.

Я также хотел избежать запуска задания MapReduce для этого, так как оно имеет большие накладные расходы для небольшого количества данных, которые я добавляю в SequenceFile.

Есть мысли или обходные пути? Спасибо.

Ответы [ 2 ]

6 голосов
/ 11 сентября 2012

Поддержка добавления к существующим SequenceFiles была добавлена ​​в выпуски Apache Hadoop 2.6.1 и 2.7.2 и более поздних версий посредством улучшения JIRA: https://issues.apache.org/jira/browse/HADOOP-7139

Например, тестовый пример можно прочитать следующим образом: https://github.com/apache/hadoop/blob/branch-2.7.2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFileAppend.java#L63-L140

Пользователи CDH5 могут найти такую ​​же возможность в версии CDH 5.7.1 и более поздних версий.

4 голосов
/ 09 апреля 2011

Извините, в настоящее время файловая система Hadoop не поддерживает добавления. Но есть планы на это в будущем выпуске.

...