Поделиться через


Изоляция записных книжек

Изоляция записных книжек связана с видимостью переменных и классов между записными книжками. Azure Databricks поддерживает два типа изоляции:

  • Изоляция переменных и классов
  • Изоляция сеанса Spark

Примечание.

Azure Databricks управляет изоляцией пользователей с помощью режимов доступа, настроенных в кластерах.

  • Отсутствие изоляции общего доступа: один и тот же кластер могут использовать несколько пользователей. Пользователи используют учетные данные, заданные на уровне кластера. Никакие средства управления доступом к данным не применяются.
  • Один пользователь: только именованный пользователь может использовать кластер. Все команды выполняются с привилегиями этого пользователя. Списки управления доступом к таблицам в хранилище метаданных Hive не применяются. Этот режим доступа поддерживает каталог Unity.
  • Общий доступ: один и тот же кластер могут использовать несколько пользователей. Пользователи полностью изолированы друг от друга, и каждый пользователь выполняет команды с собственными привилегиями. Применяются списки управления доступом к таблицам в хранилище метаданных Hive. Этот режим доступа поддерживает каталог Unity.

Изоляция переменных и классов

Переменные и классы доступны только в текущей записной книжке. Например, две записные книжки, подключенные к одному кластеру, могут определять переменные и классы с одинаковым именем, но эти объекты являются разными.

Чтобы определить класс, видимый для всех записных книжек, присоединенных к тому же кластеру, определите класс в ячейке пакета. Затем можно получить доступ к классу, используя его полное имя, что аналогично доступу к классу в присоединенной библиотеке Scala или Java.

Изоляция сеансов Spark

Каждая записная книжка, подключенная к кластеру, имеет предопределенную переменную, которая spark представляет собой .SparkSession SparkSession — это точка входа для использования API Spark, а также настройки конфигурации среды выполнения.

Изоляция сеансов Spark включена по умолчанию. Вы также можете использовать глобальные временные представления для совместного использования временных представлений в записных книжках. См. раздел CREATE VIEW. Чтобы отключить изоляцию сеансов Spark, задайте для параметра spark.databricks.session.share значение true в конфигурации Spark.

Важно!

Значение true параметра spark.databricks.session.share прерывает мониторинг, используемый для потоковой передачи как ячеек записной книжки, так и заданий. В частности:

  • Графы в ячейках потоковой передачи не отображаются.
  • Задания не блокируются, пока выполняется поток (они только успешно завершаются, останавливая поток).
  • Завершение потоков в заданиях не отслеживается. Вместо этого необходимо вручную вызвать awaitTermination().
  • Вызов создания новой визуализации для кадров данных потоковой передачи не работает.

Ячейки, которые активируют команды на других языках (то есть ячейки, использующие %scala, %python, %r и %sql) и ячейки, включающие другие записные книжки (то есть ячейки, использующие %run), являются частью текущей записной книжки. Таким образом, эти ячейки находятся в том же сеансе, что и другие ячейки записной книжки. В отличие от этого, рабочий процесс записной книжки запускает записную книжку с изолированным SparkSession, что означает, что временные представления, определенные в такой записной книжке, не видны в других записных книжках