Получить данные задания Databricks

У меня есть рабочая область Databricks через Azure, и я использую API заданий Databricks для запуска некоторых скриптов Python, которые создают файлы.

Я хочу знать, могу ли я получить эти файлы, созданные после завершения задания.

  • В Azure я вижу учетную запись хранения, связанную с рабочей областью блоков данных, в контейнерах есть запись «задание». Когда я пытаюсь получить доступ к этому, я получаю ошибку DenyAssignmentAuthorizationFailed. Я администратор организации, поэтому получение правильных разрешений не должно быть проблемой, хотя я не знаю, почему у меня еще нет доступа, и предполагаю, что это связано с блоками данных.
  • Я попытался поискать в Google и просмотреть документы Azure, но на удивление мало документации по заданиям Databricks или их хранилищу данных.

Ниже вы найдете наш код работы. Это вызывается через 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 блоков данных, который запускает сценарии Python, пример сценария Python и где вы можете увидеть эти файлы в учетной записи хранения?

Saideep Arikontham 23.11.2022 08:57

Добавлен фрагмент кода нашей работы. Задания вызываются через API, поэтому здесь нет кода. Мог бы поделиться почтальоном, но не вижу ценности. Я не вижу файлы в хранилище, вот и весь мой вопрос, где/как мне найти эти файлы.

Niels Uitterdijk 23.11.2022 10:13
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
114
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Предложите создать учетную запись хранения отдельно от DBFS для хранения вновь созданных файлов или внешних файлов. Вы можете изменить сценарий для записи в эту конкретную учетную запись хранения или скопировать ее после ее создания. Вот как мы это используем. Нет ничего плохого в записи в DBFS.

В любом случае перейдите по ссылке для подключения к Azure ADLS/BLOB Storage.

https://docs.databricks.com/external-data/azure-storage.html

В нем перечислены несколько способов аутентификации, оцените, какой из них вы считаете наиболее безопасным, и используйте этот вариант.

Надеюсь, поможет...

Это то, что мы пытаемся установить. Но для целей отладки удобно иметь прямой доступ к хранилищу заданий.

Niels Uitterdijk 23.11.2022 10:07
Ответ принят как подходящий
  • Из приведенного кода я вижу, что путь, по которому вы создаете каталог, а затем записываете файл, является не 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"))

  • Если вы хотите просмотреть эти файлы в пользовательском интерфейсе, вы можете вместо этого попробовать записать файлы в DBFS. Сначала необходимо включить браузер DBFS. Перейдите к пути 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 и щелкнуть нужную папку, которую хотите просмотреть.

Другие вопросы по теме