У меня есть рабочая область Databricks через Azure, и я использую API заданий Databricks для запуска некоторых скриптов Python, которые создают файлы.
Я хочу знать, могу ли я получить эти файлы, созданные после завершения задания.
DenyAssignmentAuthorizationFailed
. Я администратор организации, поэтому получение правильных разрешений не должно быть проблемой, хотя я не знаю, почему у меня еще нет доступа, и предполагаю, что это связано с блоками данных.Ниже вы найдете наш код работы. Это вызывается через Jobs API.
# Parse job info
info = dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson()
info = json.loads(info)
RUN_ID = info.get("tags").get("multitaskParentRunId", "no_run_id")
# Create directory
run_directory = f"/databricks/driver/training_runs/{RUN_ID}"
dbutils.fs.mkdirs(f"file:{run_directory}")
with open(f"{run_directory}/file.txt", "w") as file_:
file_.write("Hello world :)")
Добавлен фрагмент кода нашей работы. Задания вызываются через API, поэтому здесь нет кода. Мог бы поделиться почтальоном, но не вижу ценности. Я не вижу файлы в хранилище, вот и весь мой вопрос, где/как мне найти эти файлы.
Предложите создать учетную запись хранения отдельно от DBFS для хранения вновь созданных файлов или внешних файлов. Вы можете изменить сценарий для записи в эту конкретную учетную запись хранения или скопировать ее после ее создания. Вот как мы это используем. Нет ничего плохого в записи в DBFS.
В любом случае перейдите по ссылке для подключения к Azure ADLS/BLOB Storage.
https://docs.databricks.com/external-data/azure-storage.html
В нем перечислены несколько способов аутентификации, оцените, какой из них вы считаете наиболее безопасным, и используйте этот вариант.
Надеюсь, поможет...
Это то, что мы пытаемся установить. Но для целей отладки удобно иметь прямой доступ к хранилищу заданий.
Из приведенного кода я вижу, что путь, по которому вы создаете каталог, а затем записываете файл, является не DBFS, а общим хранилищем с путем file:/databricks/driver/training_runs
.
Чтобы получить содержимое указанного выше пути, в Databricks не поддерживается пользовательский интерфейс. Вы можете перечислить содержимое, используя любой из следующих способов:
dbutils.fs.ls("file:/databricks/driver/training_runs/<your_run_id>/")
#OR
#import os
#print(os.listdir("/databricks/driver/training_runs/demo"))
Admin Console ->Workspace settings -> DBFS File Browser
и включите его. Обновите рабочее пространство.file:/databricks/driver/training_runs
вы можете использовать путь, как показано ниже:run_directory = f"/FileStore/training_runs/demo"
dbutils.fs.mkdirs(f"dbfs:{run_directory}")
with open(f"/dbfs{run_directory}/file.txt", "w") as file_:
file_.write("Hello world :)")
Data -> browse DBFS -> FileStore
и щелкнуть нужную папку, которую хотите просмотреть.
Можете ли вы предоставить дополнительные сведения, такие как код API блоков данных, который запускает сценарии Python, пример сценария Python и где вы можете увидеть эти файлы в учетной записи хранения?