Java 从HDFS文件中定位的read或seek()是否会加载并忽略文件的全部内容?

Java 从HDFS文件中定位的read或seek()是否会加载并忽略文件的全部内容?,java,file,hdfs,Java,File,Hdfs,我想从某个偏移量/位置读取大文件的子内容。 例如,我有一个1M行的文件,我想从第100行开始读取50行。(行号:101至150-包括两者) 我想我应该用它。 我看到,FSInputStream.readFully实际上使用了seek()的Seekable方法 当我检查seek()的底层实现时,我看到它使用BlockReader.skip() blockReader.skip()是否会读取整个数据直到跳过字节?问题是HDFS是否也会加载前100行以到达第101行 如何在不加载其余内容的情况下,使

我想从某个偏移量/位置读取大文件的子内容。 例如,我有一个1M行的文件,我想从第100行开始读取50行。(行号:101至150-包括两者)

我想我应该用它。

我看到,
FSInputStream.readFully
实际上使用了
seek()的
Seekable
方法

当我检查
seek()
的底层实现时,我看到它使用
BlockReader.skip()

blockReader.skip()是否会读取整个数据直到跳过字节?问题是HDFS是否也会加载前100行以到达第101行

如何在不加载其余内容的情况下,使位置位于文件中任何所需的偏移量(如文件的第10000行)?s3在头偏移量中提供的东西

下面是我发现的类似问题:,但它建议使用
seek()
,评论中认为
seek()
是昂贵的操作,应该节约使用。我想这是正确的,因为seek似乎读取所有数据,以便跳到位置