Проблемы с Azure Databricks открытия файла в хранилище BLOB-объектов - PullRequest
0 голосов
/ 15 октября 2018

С помощью блоков данных Azure я могу перечислять файлы в хранилище 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: [Errno 2] Нет такого файла или каталога: u'wasbs: //rttracking-in@tstoweuyptoesb.blob.core.windows.net / rtTracking_00001.xml '

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Я смонтировал Хранилище, и затем он добился цели

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

0 голосов
/ 16 октября 2018

Я предполагаю, что 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>/...")
...