Azure Databricks - 无法从笔记本读取简单的 blob 存储文件

Azure Databricks - Unable to read simple blob storage file from notebook

我已经使用 databricks 运行时版本 5.1(包括 Apache Spark 2.4.0、Scala 2.11)和 Python 设置了一个集群 3.我还安装了 hadoop azure 库(hadoop-azure-3.2.0 ) 到集群。

我正在尝试读取存储在我的 blob 存储帐户中的 blob,它只是一个文本文件,其中包含一些由空格分隔的数字数据。我使用 databricks 生成的模板来读取 blob 数据

    spark.conf.set(
      "fs.azure.account.key."+storage_account_name+".blob.core.windows.net",
      storage_account_access_key)
    df = spark.read.format(file_type).option("inferSchema", "true").load(file_location)

其中 file_location 是我的 blob 文件 (https://xxxxxxxxxx.blob.core.windows.net)。

我收到以下错误:

没有名为 https 的文件系统

我尝试使用 sc.textFile(file_location) 读取 rdd 并得到相同的错误。

您的 file_location 格式应为:

"wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net/<your-directory-name>"

参见:https://docs.databricks.com/spark/latest/data-sources/azure/azure-storage.html

您需要使用外部位置装载 blob 才能通过 Azure Databricks 访问它。

参考:https://docs.databricks.com/spark/latest/data-sources/azure/azure-storage.html#mount-azure-blob-storage-containers-with-dbfs

这三行代码对我有用:

spark.conf.set("fs.azure.account.key.STORAGE_ACCOUNT.blob.core.windows.net","BIG_KEY")

df = spark.read.csv("wasbs://CONTAINER@STORAGE_ACCOUNT.blob.core.windows.net/")

df.select('*').show()

注意第 2 行以 .net/ 结尾,因为我没有子文件夹。