代码之家  ›  专栏  ›  技术社区  ›  Lymedo

Databricks从包含等号(=)的路径加载文件

  •  0
  • Lymedo  · 技术社区  · 3 年前

    我希望将Azure Monitor数据从日志分析导出到存储帐户,并使用PySpark将JSON文件读取到Databricks中。

    Log Analytics导出的blob路径包含一个等号(=),使用该路径时,Databricks会抛出和异常。

    WorkspaceResourceId=/subscriptions/subscription-id/resourcegroups/<resource-group>/providers/microsoft.operationalinsights/workspaces/<workspace>/y=<four-digit numeric year>/m=<two-digit numeric month>/d=<two-digit numeric day>/h=<two-digit 24-hour clock hour>/m=<two-digit 60-minute clock minute>/PT05M.json
    

    Log Analytics Data Export

    有没有办法转义等号,以便可以从blob位置加载JSON文件?

    0 回复  |  直到 3 年前
        1
  •  0
  •   SaiKarri-MT    3 年前

    我参考了Microsoft文档中的类似用例,以下是步骤:

    1. 安装存储容器。我们可以用下面的python代码来实现,确保传递的所有参数都正确,因为不正确的参数会导致多个不同的错误。

       dbutils.fs.mount(
             source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
             mount_point = "/mnt/<mount-name>",
             extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
      

      以下是参数说明:

      • <storage-account-name> 是您的Azure Blob存储帐户的名称。
      • <container-name> 是Azure Blob存储帐户中容器的名称。
      • <mount-name> 是一个DBFS路径,表示Blob存储容器或容器中的文件夹的位置(在中指定) source )将装入DBFS中。
      • <conf-key> 两者都可以 fs.azure.account.key.<storage-account-name>.blob.core.windows.net fs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net
      • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>") 获取已存储为 secret 在一个 secret scope .
    2. 然后,您可以按如下方式访问这些文件:

       df = spark.read.text("/mnt/<mount-name>/...")
       df = spark.read.text("dbfs:/<mount-name>/...")
      

    此外,还有多种访问文件的方法,所有这些都在 doc .

    并查看此日志分析工作区 doc 了解如何将数据导出到Azure存储。