我正在尝试将Blob存储从我的存储帐户映射到我的databricks集群中。我正在遵循此link,显然,这里我只需要在笔记本中执行以下代码即可:
代码python:
dbutils.fs.mount(
source = "wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net",
mount_point = "/mnt/<mount-name>",
extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
我陷入了参数(scope = "<scope-name>", key = "<key-name>")
中。我知道,为了创建一个作用域,我可以遵循此link,稍后我想在整个Databricks CLI中浏览我的clister并捕获<scope-name>
和<key-name>
。但是,当我检查群集时,我仅获得作用域名称,而在任何地方或在lkeast都找不到键名,我不知道如何获得它。
在Databricks CLI上尝试过:
我在哪里可以生成或找到<key-name>
答案 0 :(得分:2)
我的理解是,密钥名称是您试图从机密作用域中检索的“事物”。
我猜您创建了一个由数据砖支持的秘密范围,而不是由Azure密钥库支持的秘密范围?
您实际上应该已经在秘密范围中存储了一个秘密。该秘密是针对“密钥”(令人困惑的术语)存储的。
您拥有的代码正在尝试从秘密范围中检索该秘密并将其分配给该json中的<conf-key>
。
val jdbcUsername = dbutils.secrets.get(scope = "jdbc", key = "username")
在此之前,您需要创建一个密钥库,并且在其中是您已经填充的秘密名称用户名。然后这段代码去检索它
所以...。您首先需要真正知道要反对的内容,然后将其放到秘密范围内。
作为示例,您可以通过简单地对代码中的设置进行硬编码来使代码更简单但非常不安全
答案 1 :(得分:0)
请注意,blobEndpoint源必须采用以下格式:
wasbs://container@storageaccount.blob.core.windows.net
然后设置变量:
blobEndpoint = dbutils.secrets.get("blob-secret","blob-endpoint")
blobKey = dbutils.secrets.get("blob-secret","blobl-access-key")
dbutils.fs.mount(
source = blobEndpoint,
mount_point = "/mnt/blobmountsecret",
extra_configs = `{"fs.azure.account.key.<storageaccountname>.blob.core.windows.net":blobKey})`