Я много файлов в HDFS и хочу скопировать их в файлы последовательности с помощью задания MR. Ключевым типом файла seq является TEXT (я использую SHA1), а тип значения - BytesWritable (содержимое файла). Я нахожу пример кода, который читает все содержимое файла в байтовый массив, скажем, буфер, а затем задает буфер для объекта ByteWritable. Пример:Запись двоичных данных из файлов HDFS в SequenceFile
byte[] buffer = new byte[(int)file.length()];
FileInputStream fis = new FileInputStream(fileEntry);
int length = fis.read(buffer);
fis.close();
key.set(sha1);
value.set(buffer, 0, buffer.length);
writer.append(key, value);
Мой вопрос: если мой входной файл очень большой, размер буфера превышает предел памяти. Можно ли добавить объект ByteWritable к циклу, который записывает меньшее количество данных на каждой итерации? Или я могу просто назначить входной поток объекту BytesWritable и позволить ему справиться с этой проблемой?
Спасибо.
Мой пример кода читает файл из локальной файловой системы. Я хочу читать из HDFS. – avhacker
Я хочу сделать это в работе MR. Благодарю. – avhacker