Python 图片库无法读取 HDFS 路径

Python Image Library fails to read HDFS path

我正在尝试读取“.tif”图像,该图像具有 [m,n,4](行、列、通道)维度,并且具有“[=22=” PySpark 中的 HDFS 中的 ]uint16' 数据类型使用像 'tifffile' 这样的库使用以下代码:

import tifffile as tiff\ img = tiff.imread('hdfs://master:9000/image1.tif')

,但我总是收到消息:


FileNotFoundError: [Errno 2] No such file or directory: '/home/user/spark_files/tfos/hdfs:/master:9000/image1.tif'.


图像 hdfs://master:9000/image1.tif 的 HDFS 路径是正确的,并且 'tifffile' 库在使用本地文件系统而不是 HDFS 时运行良好。 看起来图像库不理解 HDFS 路径! 考虑到 Spark API 无法读取此类图像,如何解决此问题?

你可以通过两种方式解决这个问题

  1. Spark-提交您的作业并使用--files选项传递所需的文件,这样它将上传到所有执行程序并可以直接访问。

  2. 在边缘节点获取文件然后触发脚本。

最后,我可以使用 hdfsimagecodecs 库解决这个问题:

from pyarrow import hdfs
import imagecodecs

connect = hdfs.connect("master",9000)
img_file = connect.open('/img1.tif', mode='rb')
img_bytes = img_file.read()
numpy_img = imagecodecs.tiff_decode(img_bytes)