python-3.x - 从 Azure Databricks 读取 Azure Datalake Gen2 映像
问题描述
我正在处理.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
为了进一步测试,尝试从网络打开一个相同的文件 @
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 使用的是本地 API,并且只能从以 /dbfs/ 开头的路径读取。
您可以挂载 blob 存储吗?这将允许您使用以 /dbfs/mnt/ 开头的路径的 rasterio 访问它
推荐阅读
- yocto - yocto poky-tiny 不创建 rcS 符号链接
- html - 使用 flexbox 使所有元素具有相同的高度
- java - 如何从 Json 字符串中解析 Json 数组
- laravel - 如何在 Laravel 5.6 中错误修复 Laravel Group
- python - 删除小写字母并在字符串末尾移动标点符号
- c++ - GCC 和 OpenJDK 编译器中跟踪调试信息的差异
- java - java OOM 创建 2 个十亿整数的数组
- java - Spring Boot Cassandra 读取超时
- node.js - 错误命令失败,退出代码为 1。当我尝试运行纱线时
- c - 何时在 C 中使用 %d 和 %f?