将数据湖存储第 2 代与数据块连接起来
connecting data lake storage gen 2 with databricks
我正在尝试将 MS Azure databricks 与数据湖存储 v2 连接,但无法匹配客户端、机密范围和密钥。
我在 Azure 数据湖 v2 中有数据。我正在尝试按照这些说明进行操作:
我创建了一个'service principle'角色"Storage Blob Data Contributor",获得了
我已经在 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")
如果有人可以提供帮助,请告知/确认:
CLIENT-ID 应该是什么:我理解这是来自存储帐户;
应该在哪里创建 SCOPE-NAME 和 KEY-VALUE,在 Azure Keyvault 或 Databricks 中?
https://login.microsoftonline.com/XXXXXXXXXX/oauth2/token 中的 XXXX 应该是您的租户 ID(从门户 > 属性 > DirectoryID 中的 Azure Active Directory 选项卡获取)。
客户端 ID 是 ApplicationID/Service 主体 ID(遗憾的是,这些名称在 Azure 世界中可以互换使用 - 但它们都是一样的)。
如果您尚未创建服务主体,请按照以下说明操作:https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad-app#register-your-application-with-an-azure-ad-tenant - 确保在创建后授予服务主体访问您的湖的权限。
您应该为主体 ID 密钥创建一个范围和机密 - 因为这是您想对自由文本隐藏的内容。您不能在 Databricks UI 中创建它(目前)。使用其中之一:
- CLI - https://docs.databricks.com/user-guide/secrets/secrets.html#create-a-secret
- PowerShell - https://github.com/DataThirstLtd/azure.databricks.cicd.tools/wiki/Set-DatabricksSecret
- 休息 API - https://docs.databricks.com/api/latest/secrets.html#put-secret
目前我认为无法在 Azure KeyVault 中创建机密 - 尽管我希望将来能看到。从技术上讲,您可以使用他们的 API 手动与 Key Vault 集成,但这会给您带来另一个麻烦,因为需要秘密凭证才能连接到 Key Vault。
我遇到了同样的问题,我唯一额外做的就是在 azure 存储资源管理器中将应用程序的默认权限分配给 datalake gen2 的 blob 容器。它需要应用程序的对象 ID,这不是 UI 上可用的对象 ID,可以通过在 azure-cli 上使用命令 "az ad sp show --id " 来获取它。
给blob容器赋予权限后,新建一个文件,然后尝试访问它,
我正在尝试将 MS Azure databricks 与数据湖存储 v2 连接,但无法匹配客户端、机密范围和密钥。
我在 Azure 数据湖 v2 中有数据。我正在尝试按照这些说明进行操作:
我创建了一个'service principle'角色"Storage Blob Data Contributor",获得了
我已经在 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")
如果有人可以提供帮助,请告知/确认:
CLIENT-ID 应该是什么:我理解这是来自存储帐户;
应该在哪里创建 SCOPE-NAME 和 KEY-VALUE,在 Azure Keyvault 或 Databricks 中?
https://login.microsoftonline.com/XXXXXXXXXX/oauth2/token 中的 XXXX 应该是您的租户 ID(从门户 > 属性 > DirectoryID 中的 Azure Active Directory 选项卡获取)。
客户端 ID 是 ApplicationID/Service 主体 ID(遗憾的是,这些名称在 Azure 世界中可以互换使用 - 但它们都是一样的)。
如果您尚未创建服务主体,请按照以下说明操作:https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad-app#register-your-application-with-an-azure-ad-tenant - 确保在创建后授予服务主体访问您的湖的权限。
您应该为主体 ID 密钥创建一个范围和机密 - 因为这是您想对自由文本隐藏的内容。您不能在 Databricks UI 中创建它(目前)。使用其中之一:
- CLI - https://docs.databricks.com/user-guide/secrets/secrets.html#create-a-secret
- PowerShell - https://github.com/DataThirstLtd/azure.databricks.cicd.tools/wiki/Set-DatabricksSecret
- 休息 API - https://docs.databricks.com/api/latest/secrets.html#put-secret
目前我认为无法在 Azure KeyVault 中创建机密 - 尽管我希望将来能看到。从技术上讲,您可以使用他们的 API 手动与 Key Vault 集成,但这会给您带来另一个麻烦,因为需要秘密凭证才能连接到 Key Vault。
我遇到了同样的问题,我唯一额外做的就是在 azure 存储资源管理器中将应用程序的默认权限分配给 datalake gen2 的 blob 容器。它需要应用程序的对象 ID,这不是 UI 上可用的对象 ID,可以通过在 azure-cli 上使用命令 "az ad sp show --id " 来获取它。 给blob容器赋予权限后,新建一个文件,然后尝试访问它,