Расширьте SequenceFileInputFormat, чтобы включить имя файла + смещение

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

Чтобы сделать шаг назад, здесьПример использования: у меня есть файл последовательности, содержащий данные переменного размера. Ключи в основном не имеют значения, и их значения могут достигать пары мегабайт, содержащих различные поля. Я хотел бы проиндексировать некоторые из этих полей вasticsearch вместе с именем файла и смещением. Таким образом, я могу запросить эти поля изasticsearch, а затем использовать имя файла и смещение, чтобы вернуться к файлу последовательности и получить исходную запись, вместо того, чтобы сохранить все это в ES.

У меня весь этот процесс работает как одна Java-программа. Класс SequenceFile.Reader удобно предоставляетgetPosition а такжеseek методы, чтобы это произошло.

Однако в конечном итоге будет задействовано много терабайт данных, поэтому мне нужно будет преобразовать это в задание MapReduce (возможно, только для Map). Поскольку фактические ключи в файле последовательности не имеют значения, подход, который я надеялся использовать, заключается в создании пользовательского InputFormat, который расширяет или каким-либо образом использует SquenceFileInputFormat, но вместо возврата фактических ключей вместо этого возвращает составной ключ, состоящий из файла и смещение.

Однако этооказывается сложнее на практике. Кажется, что это должно быть возможно, но учитывая фактические API и чторазоблачен, этоСложно. Есть идеи? Может быть, альтернативный подход я должен взять?

Ответы на вопрос(1)

Ваш ответ на вопрос