如何在打开ignitepath时获取inputstream(返回HadoopigfsSecondaryFileSystemPositioneDreable)?

2admgd59  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(508)

通常,在使用hadoop和flink时,从分布式文件系统打开/读取文件将返回扩展java.io.inputstream的源(sink的对应对象)对象。
但是,在ApacheIgnite中,igfssecondaryfilesystem,更具体地说是ignitehadoopigfssecondaryfilesystem,在调用其“open”方法(通过传递igfspath)时返回HadoopIGFSSecondaryFileSystemPositioneDable类型的对象。
hadoopigfssecondaryfilesystempositionedrable提供了一个“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方法之前确定这些细节?
我对这些框架非常陌生,可能存在一种不同的方法来获取基于指向hadoop文件系统中存储的文件的igfspath的inputstream?
我正在努力实现这里所描述的目标:https://apacheignite-fs.readme.io/docs/secondary-file-system
提前谢谢你的提示!

ryhaxcpt

ryhaxcpt1#

igfssecondaryfilesystem接口不应直接使用。您可以将hadoop集群配置为用于读通和写通操作的辅助fs。
igfssecondaryfilesystem只能在配置中指定为filesystemconfiguration#secondaryfilesystem属性。
您应该改用文件系统接口。您可以通过调用ignite#filesystem(…)方法来获取它的示例。获得 InputStream 通过igfs路径,可以使用ignitefilesystem#open(…)方法。

相关问题