当前位置: 首页 > 知识库问答 >
问题:

无法在数据砖上使用 python 访问已装载的卷

咸正平
2023-03-14

我正在尝试使用凭据直通将Azure存储帐户Gen2容器安装到dbfs,从而将其访问权限授予数据库里克斯工作区中的团队。我希望能够使用Active Directory管理访问权限,因为最终会以只读方式安装容器。

我的代码基于本教程:https://learn . Microsoft . com/en-us/azure/data bricks/data/data-sources/azure/adls-pass through # adls-aad-credentials

从我的conf中提取:

"spark_conf": {
        "spark.databricks.cluster.profile": "serverless",
        "spark.databricks.passthrough.enabled": "true",
        "spark.databricks.delta.preview.enabled": "true",
        "spark.databricks.pyspark.enableProcessIsolation": "true",
        "spark.databricks.repl.allowedLanguages": "python,sql"
    }

然后,我运行以下代码:

dbutils.fs.mount(
  source = f"wasbs://data@storage_account_name.blob.core.windows.net",
  mount_point = "/mnt/data/",
  extra_configs = {
  "fs.azure.account.auth.type":"CustomAccessToken",
  "fs.azure.account.custom.token.provider.class":spark.conf.get("spark.databricks.passthrough.adls.gen2.tokenProviderClassName")
}

这是一个成功,因为我可以使用dbutils访问卷。

>> dbutils.fs.ls('dbfs:/mnt/storage_account_name/data')
[FileInfo(path='dbfs:/mnt/storage_account_name/data/folder/', name='folder/', size=0)]

我的问题是

>> import os 
>> os.listdir('/dbfs/')
Out[1]: []

>> os.listdir('/dbfs/mnt/')
FileNotFoundError: [Errno 2] No such file or directory: '/dbfs/mnt/'

我找不到我错过了什么。有没有什么需要配置的东西让python可以访问?谢了。

共有2个答案

漆雕昊天
2023-03-14

答案很简单。

本地文件API限制

以下列表列举了适用于每个Databricks运行时版本的本地文件API使用限制。

All - Does not support credential passthrough.

资料来源:https://learn.microsoft.com/en-us/azure/databricks/data/databricks-file-system#local-文件api

蓬思博
2023-03-14

使用凭据传递选项时存在某些限制,这就是它不起作用的原因。不存在语法问题。看这个官方文档就明白了。

 类似资料:
  • 我正在使用Azure数据库。使用Microsoft学习网站上指定的文档,我设法将BLOB存储(ADLS Gen2)挂载到我的数据库。 但是,当我尝试列出已装入的存储的内容时,我收到以下错误: 我已经检查了权限,我的Service主体被分配了角色“STORAGE BLOB DATA CONTRIBUTOR”,它允许对我的存储容器进行R/W访问。 任何人都知道我错过了哪个部分来使它工作?将不胜感激。

  • 我装载了一个 blob 存储容器(已确认的 blob 类型): 挂载点已创建,我可以在数据砖中看到它。我在此容器中放置了一个 csv 文件,以及一个包含更多 csv 文件但无法访问任何内容的文件: 找不到Java . io . filenotfoundexception:/文件 shade.databricks.org.apache.hadoop.fs.azure。AzureException:s

  • 我正在使用 Azure Blob 存储来存储数据,并使用装载将此数据馈送到自动加载程序。我正在寻找一种方法来允许自动加载器从任何装载加载新文件。假设我的装载中有这些文件夹: mnt/ ├─ blob_container_1 ├─ blob_container_2 当我使用 .load('/mnt/') 时,没有检测到新文件。但是当我单独考虑文件夹时,它像.load('/mnt/blob_conta

  • 这是运行命令后发生的情况: 启动:pid=4346 port=27017 dbpath=/var/lib/mongodb/data/db 64位host=era-inspiron-5559 2017-02-12T14:39:18.644+0530 I CONTROL[initandlisten]db版本v3.4.2 2017-02-12T14:39:18.644+0530 I控件[initandl

  • 问题内容: 我在HDFS中有一些数据,我需要使用python访问该数据,有人可以告诉我如何使用python从蜂巢访问数据吗? 问题答案: 您可以使用hive库从python访问hive,因为要从hive导入ThriveHive导入hive类 下面的例子

  • 我一直在尝试使用Vagrant在ubuntu上安装Jenkins。即使我没有得到任何错误的过程中,我无法打开http://localhost:8080 以下是我的步骤: 在MAC上安装Vagrant和Virtual Box 为流浪汉创建文件夹 阴道炎便当/ubuntu-16.04 nano Vagrantfile-从端口删除hasztag,并将其转发到8080 流浪汉上路 流浪汉 安装git: S