Как читать файлы со смещением от Hadoop, используя Java

Проблема: я хочу прочитать раздел файла из HDFS и вернуть его, например, строки 101-120 из файла из 1000 строк.

Я не хочу использоватьseek потому что я прочитал, что это дорого.

У меня есть файлы журналов, которые я использую PIG для обработки значимых наборов данных. Я писал API для возврата данных для потребления и отображения внешним интерфейсом. Эти обработанные наборы данных могут быть достаточно большими, поэтому я не хочу читать весь файл из Hadoop за один прием, чтобы сэкономить время и пропускную способность канала. (Скажем, 5 - 10 МБ)

В настоящее время я используюBufferedReader вернуть небольшие итоговые файлы, которые работают нормально

ArrayList lines = new ArrayList();
...
for (FileStatus item: items) {
    // ignoring files like _SUCCESS
    if(item.getPath().getName().startsWith("_")) {
        continue;
    }           

    in = fs.open(item.getPath());
    BufferedReader br = new BufferedReader(new InputStreamReader(in));

    String line;
    line = br.readLine();
    while (line != null) {
        line = line.replaceAll("(\\r|\\n)", "");
        lines.add(line.split("\t"));
        line = br.readLine();
    }
}

Я немного разбирался в паутинах, а также в стеке, но не нашел именно то, что мне нужно.

Возможно, это совершенно неправильный способ сделать это, и мне нужен совершенно отдельный набор кода и различные функции для управления этим. Открыты для любых предложений.

Спасибо!

Как добавлено, отмечено на основе исследований из нижеприведенных обсуждений: Каким образом Hadoop обрабатывает записи, разделенные по границам блоков? Hadoop FileSplit Reading

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

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