Python 从hdfs中的tar文件流式传输文件

Python 从hdfs中的tar文件流式传输文件,python,streaming,tarfile,pyarrow,Python,Streaming,Tarfile,Pyarrow,我有tiff图像存储在HDFS的tar文件中。我可以通过以下方式下载tar文件和流: tar = tarfile.open("filename.tar", 'r|') for tiff in tar: if tiff.isfile(): a = tar.extractfile(tiff).read() na = np.frombuffer(c, dtype=np.uint8) im = cv2.imdecode(na, cv2.IMREAD

我有tiff图像存储在HDFS的tar文件中。我可以通过以下方式下载tar文件和流:

tar = tarfile.open("filename.tar", 'r|')
for tiff in tar:
    if tiff.isfile():
        a = tar.extractfile(tiff).read()
        na = np.frombuffer(c, dtype=np.uint8)
        im = cv2.imdecode(na, cv2.IMREAD_COLOR)
这给了我一个numpy数组。我想看看是否有一种方法可以直接从hdfs中的tar文件流式传输tiff文件

以下是我所拥有的:

import pyarrow as pa
fs = pa.hdfs.connect()
with fs.open(hdfs_path_to_tar_file, 'rb') as f:
    print(type(f))

<class 'pyarrow.lib.HdfsFile'>
将pyarrow导入为pa
fs=pa.hdfs.connect()
将fs.open(hdfs_path_到_tar_文件,'rb')作为f:
印刷品(f类)

我不知道如何用
tarfile
阅读它。我需要将其转换为字节类型的对象,我可以使用
tarfile.open
读取该对象。但我不想一开始就看整个文件。tar文件非常大,因此我不想将它们放在内存中,即
f.read()
返回字节,但将整个内容放在内存中。虽然,
tarfile.open也无法读取该文件。

尝试将HDFS文件句柄传递给
tarfile.open的
fileobj
参数

tf = tarfile.open(fileobj=f)

尝试将HDFS文件句柄传递给
tarfile.open的
fileobj
参数

tf = tarfile.open(fileobj=f)