Azure Databricks在Blob存储上打开文件的问题

时间:2018-10-15 17:27:12

标签: azure pyspark databricks

借助Azure Databricks,我可以列出blob存储中的文件,并将它们放在一个数组中。 但是,当我尝试打开一个文件时,出现错误。可能是由于特殊的语法。

storage_account_name = "tesb"
storage_container_name = "rttracking-in"
storage_account_access_key = "xyz"
file_location = "wasbs://rttracking-in"
file_type = "xml"

spark.conf.set(
  "fs.azure.account.key."+storage_account_name+".blob.core.windows.net",
  storage_account_access_key)

xmlfiles = dbutils.fs.ls("wasbs://"+storage_container_name+"@"+storage_account_name+".blob.core.windows.net/")

import pandas as pd
import xml.etree.ElementTree as ET
import re
import os

firstfile = xmlfiles[0].path
root = ET.parse(firstfile).getroot()

错误是

IOError:[错误2]没有此类文件或目录:u'wasbs://rttracking-in@tstoweuyptoesb.blob.core.windows.net/rtTracking_00001.xml'

2 个答案:

答案 0 :(得分:1)

我的猜测是ET.parse()不知道您在其中建立与存储帐户的连接的Spark上下文。或者,您可以尝试安装存储。然后,您可以像本地文件一样通过本地路径访问文件。

参见此处:https://docs.databricks.com/spark/latest/data-sources/azure/azure-storage.html#mount-an-azure-blob-storage-container

这应该可以:

root = ET.parse("/mnt/<mount-name>/...")

答案 1 :(得分:0)

我确实挂载了存储,然后就可以了

firstfile = xmlfiles [0] .path.replace('dbfs:','/ dbfs') root = ET.parse(firstfile).getroot()