从Azure Databricks读取Azure Datalake Gen2图像

时间:2020-01-22 01:15:41

标签: python-3.x azure-databricks rasterio azure-data-lake-gen2

正在处理存储在Azure Data Lake Gen2中的.tif文件。希望使用Azure Databricks的rasterio打开此文件。

示例:

当以spark.read.format("image").load(filepath)的形式从Data Lake读取图像文件时,效果很好。

enter image description here

但尝试与打开相同

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。

enter image description here

还尝试通过在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'工作正常

1 个答案:

答案 0 :(得分:0)

我相信这是因为rasterio使用的是本地API,并且只能从以/ dbfs /开头的路径读取。

您是否可以挂载Blob存储?这样一来,您就可以使用rasterio以/ dbfs / mnt /

开头的路径进行访问