我正在处理.tif
存储在Azure Data Lake Gen2中的文件。想要使用rasterio
Azure Databricks 打开此文件。
例:
从Data Lake读取图像文件时,spark.read.format("image").load(filepath)
效果很好。
但是尝试打开与
with rasterio.open(filepath) as src:
print(src.profile)
出现错误:
RasterioIOError: wasbs://xxxxx.blob.core.windows.net/xxxx_2016/xxxx_2016.tif: No such file or directory
任何线索在做什么错了?
更新:
正如Axel R所建议的那样,已在Databricks文件系统上挂载文件,但仍然出现相同的问题,无法从rasterio打开文件,但可以读取为df。
还尝试通过在Datalake中为文件创建共享访问签名来尝试,并尝试通过URI访问文件。现在在错误下面得到错误:
CURL error: error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none
为了进一步测试,尝试从Web打开一个相同文件@
filepath = 'http://landsat-pds.s3.amazonaws.com/c1/L8/042/034/LC08_L1TP_042034_20170616_20170629_01_T1/LC08_L1TP_042034_20170616_20170629_01_T1_B4.TIF'
工作良好
我相信这是因为rasterio使用的是Local API,并且只能从以/ dbfs /开头的路径读取。
您是否可以挂载Blob存储?这样一来,您就可以使用rasterio以/ dbfs / mnt /开头的路径访问它
我同意这个答案。这也暗示了将在驱动程序上运行的阻塞操作,只会使工人闲置。通常,您要避免的事情。
装入数据块后,将其读取为'dbfs:/mnt/Firescar/cvmsre_201910_afka2.tif'时,所有文件都可以正常读取./dbfs/mnt/Firescar/cvmsre_201910_afka2.tif