Как получить InputStream при открытии IgnitePath (возвращает HadoopIgfsSecondaryFileSystemPositionedReadable)? - PullRequest
0 голосов
/ 18 мая 2018

Обычно при работе с Hadoop и Flink открытие / чтение файла из распределенной файловой системы возвращает объект Source (аналог Sink), расширяющий java.io.InputStream.

Однако в ApacheIgnite, IgfsSecondaryFileSystem и, более конкретно, IgniteHadoopIgfsSecondaryFileSystem, возвращает объект типа HadoopIgfsSecondaryFileSystemPositionedReadable при вызове их метода " open " (путем передачи класса IgFs * 100 * * *)

.предлагает метод " read ", но требует подробных сведений о том, где находятся данные, предназначенные для чтения, такие как позиция входного потока.
/**
 * Read up to the specified number of bytes, from a given position within a file, and return the number of bytes
 * read.
 *
 * @param pos Position in the input stream to seek.
 * @param buf Buffer into which data is read.
 * @param off Offset in the buffer from which stream data should be written.
 * @param len The number of bytes to read.
 * @return Total number of bytes read into the buffer, or -1 if there is no more data (EOF).
 * @throws IOException In case of any exception.
 */
public int read(long pos, byte[] buf, int off, int len) throws IOException;

Как определить эти детали перед вызовом метода read ?

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

Я пытаюсь достичьчто описано здесь: https://apacheignite -fs.readme.io / docs / second-file-system

Заранее благодарен за любую подсказку!

1 Ответ

0 голосов
/ 21 мая 2018

IgfsSecondaryFileSystem интерфейс не должен использоваться напрямую.Вы можете настроить кластер Hadoop для использования в качестве вторичной FS для операций чтения и записи.

IgfsSecondaryFileSystem следует указывать в конфигурации только как FileSystemConfiguration # secondFileSystem свойство.

Вместо этого следует использовать интерфейс IgniteFileSystem .Вы можете получить его экземпляр, вызвав метод Ignite # fileSystem (...) .Чтобы получить путь InputStream по IGFS, вы можете использовать метод IgniteFileSystem # open (...) .

...