我正在尝试使用存储帐户访问密钥通过Azure Databricks访问存储在ADLS位置的数据文件。为了访问数据文件,我在azure databricks中使用python notebook,下面的命令工作正常,
spark.conf.set(
"fs.azure.account.key.<storage-account-name>.dfs.core.windows.net",
"<access-key>"
)
但是,当我尝试使用下面的命令列出目录时,它会抛出错误
dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net")
错误:
ExecutionError: An error occurred while calling z:com.databricks.backend.daemon.dbutils.FSUtils.ls.
: Operation failed: "This request is not authorized to perform this operation using this permission.", 403, GET, https://<storage-account-name>.dfs.core.windows.net/<container-name>?upn=false&resource=filesystem&maxResults=500&timeout=90&recursive=false, AuthorizationPermissionMismatch, "This request is not authorized to perform this operation using this permission. RequestId:<request-id> Time:2021-08-03T08:53:28.0215432Z"
我不确定它需要什么权限,我该如何继续。
此外,我正在使用ADLS Gen2和Azure Database ricks(试用版-高级版)。
提前感谢!
您可以通过Database ricks使用访问密钥挂载ADLS存储帐户,然后读取/写入数据。请尝试以下代码:
dbutils.fs.mount(
source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
mount_point = "/mnt/<mount-name>",
extra_configs = {"fs.azure.account.key.<storage-account-name>.blob.core.windows.net":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
dbutils.fs.ls("/mnt/<mount-name>")
试试这个。
spark.conf.set("fs.azure.account.key.<your-storage-account-name>.blob.core.windows.net","<your-storage-account-access-key>")
dbutils.fs.mount(source = "abfss://<container-name>@<your-storage-account-name>.dfs.core.windows.net/", mount_point = "/mnt/test")
完整的配置密钥称为“spark.hadoop.fs.azure.account.key.adlsiqdigital.dfs.core.windows.net”
但是,对于生产环境来说,使用服务帐户和装载点是有益的。这样,存储上的操作可以更容易地追溯到该应用程序,而不仅仅是使用通用访问键和挂载点,从而避免在代码中到处指定连接字符串。
我在努力学习火花,数据库 我正在尝试使用Pyspark从数据砖访问GEN2。我找不到合适的方法,我相信它超级简单,但我失败了。 目前每次我都会收到以下邮件: 我已经运行了GEN2,我有一个SAS_URI访问。 到目前为止,我正在尝试:(基于此链接:https://learn.microsoft.com/pl-pl/azure/databricks/data/data-sources/azure/a
我有包含 Blob 容器的 ADLS 存储帐户。我已经成功地在数据砖中将 ADLS 与服务主体一起挂载,并且能够对数据进行必要的转换。 现在,我正在使用用户分配的托管身份来避免在代码中保留机密。为此,我创建了所需的托管身份,并通过在存储帐户中分配必要的角色来为我的服务主体启用它。 我的问题是,如何使用托管标识,或者如何在不装载或使用机密的情况下从 Databricks 对 ADLS 存储进行转换?
在我们这家小公司的团队中,我遇到了一些挫折,围绕着使用Azure Databricks中将Azure Databricks作为我们的增量表的后端(我是这家公司和Databricks的新手,所以我可能解释的任何事情都是在我之前决定的,我意识到其中一些可能是有问题的, 但不是寻找对此的看法)。 本质上,工程团队正在构建数据摄取管道(作为python文件,而不是笔记本),这些管道在Azure Datab
问题内容: 我有一个要求,即只能从本地主机访问mysql数据库。我必须实现一个可以访问数据库的servlet,以允许该系统中的其他服务器访问数据(servlet可以充当代理)。但是,此系统由一个远程服务器组成,该服务器下载执行以下语句的大部分数据: 有人可以建议我如何编写一个以有效方式流式传输此类数据的servlet吗(我是数据库新手)? 问题答案: 首先,我不建议为此使用servlet。有关正确
问题内容: 我在Data Lake Gen2中拥有一个Azure存储帐户。我想使用Python(或Java)将数据从本地上传到Lake Gen2文件系统。 我已经找到了有关如何与存储帐户中的文件共享进行交互的示例,但是我仍无法找到如何上传到Lake(而不是文件共享)的示例。我还发现了如何在Gen1 Lakes上执行此操作,但是除了已关闭的Gen2 请求外,什么都没有。 我的问题是,到今天为止,是否
我是使用API的新手。我只想从API中获取数据并将其存储在数据库中。我知道python中有很多库/包可以从特定的API中提取数据(例如Google API:google-api-python-client)。那么有没有通用库可以从API中获取数据呢? 非常感谢。