соединение хранилища озера данных 2-го поколения с блоками данных - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь подключить блоки данных MS Azure к хранилищу озера данных v2 и не могу сопоставить клиента, секретную область и ключ.

У меня есть данные в озере данных Azure v2.Я пытаюсь следовать этим инструкциям:

https://docs.azuredatabricks.net/spark/latest/data-sources/azure/azure-datalake-gen2.html#requirements-azure-data-lake

Я создал «принцип обслуживания» с ролью «Участник хранилища BLOB-данных», полученный

У меня естьСоздавая секретные области в Azure Keyvault и Databricks с ключами и значениями

, когда я пытаюсь выполнить приведенный ниже код, аутентификация не может распознать секретную область и ключ.Из документации мне не ясно, нужно ли использовать секретную область Azure Keyvault или Databricks.

val configs = Map(
  "fs.azure.account.auth.type" -> "OAuth",
  "fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
  "fs.azure.account.oauth2.client.id" -> "<CLIENT-ID>",
  "fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get(scope = "<SCOPE-NAME>", key = "<KEY-VALUE>"),
  "fs.azure.account.oauth2.client.endpoint" -> "https://login.microsoftonline.com/XXXXXXXXXX/oauth2/token")

Если кто-то может помочь с этим, пожалуйста, сообщите / подтвердите:

какой должен быть идентификатор клиента: я понимаю, что это из учетной записи хранения;

где должны быть созданы ИМЯ ОБЛАСТИ и КЛЮЧЕВОЕ ЗНАЧЕНИЕ в Azure Keyvault или Databricks?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Я столкнулся с той же проблемой, единственное, что я сделал дополнительно, - это назначил разрешение приложения по умолчанию контейнеру больших двоичных объектов в datalake gen2 в обозревателе хранилищ Azure.Требуется идентификатор объекта приложения, который не доступен в пользовательском интерфейсе, его можно получить с помощью команды «az ad sp show --id» в azure-cli.После назначения разрешения для контейнера BLOB-объектов создайте новый файл и попробуйте получить к нему доступ,

0 голосов
/ 30 января 2019

XXXX в https://login.microsoftonline.com/XXXXXXXXXX/oauth2/token должен быть вашим TenantID (получите его на вкладке Azure Active Directory в Портал> Свойства> DirectoryID).

Идентификатор клиента - это ApplicationID / идентификатор участника службы(к сожалению, эти имена взаимозаменяемы в мире Azure, но они все одно и то же).

Если вы еще не создали участника службы, следуйте этим инструкциям: https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad-app#register-your-application-with-an-azure-ad-tenant - убедитесь, что вы предоставили субъекту службы доступ к вашему озеру после его создания.

Вам следуетсоздайте область действия и секрет для основного ключа идентификации - поскольку это то, что вы хотите скрыть от свободного текста.Вы не можете создать это в пользовательском интерфейсе Databricks (пока).Используйте один из них:

Сейчас я не думаю, что смогу создать секреты в Azure KeyVault - хотя я ожидаю увидеть это в будущем.Технически вы могли бы вручную интегрироваться с Key Vault, используя их API, но это доставило бы вам еще одну головную боль при необходимости секретных учетных данных для подключения к хранилищу ключей.

...