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 无法读取此类图像,如何解决此问题?
你可以通过两种方式解决这个问题
Spark-提交您的作业并使用--files选项传递所需的文件,这样它将上传到所有执行程序并可以直接访问。
在边缘节点获取文件然后触发脚本。
最后,我可以使用 hdfs
和 imagecodecs
库解决这个问题:
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)
我正在尝试读取“.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 无法读取此类图像,如何解决此问题?
你可以通过两种方式解决这个问题
Spark-提交您的作业并使用--files选项传递所需的文件,这样它将上传到所有执行程序并可以直接访问。
在边缘节点获取文件然后触发脚本。
最后,我可以使用 hdfs
和 imagecodecs
库解决这个问题:
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)