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

为什么Databricks Python无法从我的Azure Datalake存储Gen1中读取数据?

幸越泽
2023-03-14

我正在尝试读取文件<code>mydir/mycsv。来自Azure Data Lake Storage Gen1的csv,来自Databricks笔记本,使用语法(受文档启发)

configs = {"dfs.adls.oauth2.access.token.provider.type": "ClientCredential",
           "dfs.adls.oauth2.client.id": "123abc-1e42-31415-9265-12345678",
           "dfs.adls.oauth2.credential": dbutils.secrets.get(scope = "adla", key = "adlamaywork"),
           "dfs.adls.oauth2.refresh.url": "https://login.microsoftonline.com/123456abc-2718-aaaa-9999-42424242abc/oauth2/token"}

dbutils.fs.mount(
  source = "adl://myadls.azuredatalakestore.net/mydir",
  mount_point = "/mnt/adls",
  extra_configs = configs)

post_processed = spark.read.csv("/mnt/adls/mycsv.csv").collect()

post_processed.head(10).to_csv("/dbfs/processed.csv")

dbutils.fs.unmount("/mnt/adls")

我的客户123abc-1e42-31415-9265-12345678有权访问Data Lake Storagemyadls,我已经创建了一些秘密

databricks secrets put --scope adla --key adlamaywork

当我在数据砖笔记本中执行上面的pyspark代码时,当使用spark.read访问csv文件时.csv,我得到

com.microsoft.azure.datalake.store.ADLException: Error get info for file /mydir/mycsv.csv

当使用dbfs-ls-dbfs:/mnt/adls导航dbfs时,父装入点似乎在那里,但我得到了

错误:b“{ " ERROR _ code ":" IO _ ERROR "," message ":"获取访问令牌时出错\ n最后一次尝试1次后引发异常[HTTP0(null)]"} "

我做错了什么?

共有1个答案

茹建茗
2023-03-14

如果不一定需要将目录挂载到dbfs中,可以尝试直接从adls中读取,如下所示:

spark.conf.set("dfs.adls.oauth2.access.token.provider.type", "ClientCredential")
spark.conf.set("dfs.adls.oauth2.access.token.provider", "org.apache.hadoop.fs.adls.oauth2.ConfCredentialBasedAccessTokenProvider")
spark.conf.set("dfs.adls.oauth2.client.id", "123abc-1e42-31415-9265-12345678")
spark.conf.set("dfs.adls.oauth2.credential", dbutils.secrets.get(scope = "adla", key = "adlamaywork"))
spark.conf.set("dfs.adls.oauth2.refresh.url", "https://login.microsoftonline.com/123456abc-2718-aaaa-9999-42424242abc/oauth2/token")

csvFile = "adl://myadls.azuredatalakestore.net/mydir/mycsv.csv"

df = spark.read.format('csv').options(header='true', inferschema='true').load(csvFile)
 类似资料:
  • 我正在通过一个对我来说是新的IDE进行一个学校项目:IntelliJ。 为了提交我的项目(通过git),我创建了一个git存储库,添加了正确的remote及其密码,并尝试将我的工作推到主分支(在成功添加/提交所述工作之后)。 一开始我收到以下错误消息: 推送失败:失败,错误:致命:无法从远程存储库读取。 下面是我的文件: 我哪里错了?

  • 问题内容: Cobra和Viper中的文档使我感到困惑。我做了,然后在项目目录中做了。我有一个名为,这里是命令中的init函数。 我的配置文件如下所示: 当我打电话给我的时候 当我打电话时看到了… 因此它正在使用配置文件,但是似乎没有人正在读取它。也许我误解了眼镜蛇和毒蛇的工作方式。有任何想法吗? 问题答案: 要结合和,首先使用Cobra定义标志: 与Viper绑定: 并通过Viper方法获取变量

  • 问题内容: 我有一个问题,当XML文件中存在UTF-8字符时,我的DOM解析器无法加载文件现在,我知道我必须给他指令以读取utf-8,但我不知道如何放置它在我的代码中,它是: 我知道有方法setencoding(),但我不知道将其放在代码中的位置… 问题答案: 试试这个。 为我工作

  • 我正试着和git建立联系http://danielmiessler.com/study/git/#website来管理我的网站。 我已经完成了说明中的最后一步:git推送网站master:refs/heads/master 我正在使用win7中的git ming32命令行 这里的一个问题可能是程序正在寻找Bill@***. com。当我通过ssh连接到我的网站时,我有一个不同的用户名(让我们说“a

  • 在我的保险库和领事整合我有以下秘密引擎enble 以以下错误结束 待覆盖的Vault-Value其他:待覆盖的Vault-Value已成功连接到数据库 在上下文初始化期间-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:创建名为“demo application”的bean时出错:调用init方法失败;嵌套异常为java

  • 为什么我无法从mapview中删除我的注释? 我的代码: <代码>[self.mapView removeAnnotation:myAnnotation] 不适用于我