Azure databricks - 无法使用来自 datalake 存储 gen2 服务的 spark 作业读取 .csv 文件

Posted

技术标签:

【中文标题】Azure databricks - 无法使用来自 datalake 存储 gen2 服务的 spark 作业读取 .csv 文件【英文标题】:Azure databricks - not able to read .csv files using spark jobs from datalake storage gen2 service 【发布时间】:2021-02-18 11:22:57 【问题描述】:

我有一个运行良好的数据块集群。并且使用以下代码,我也可以挂载我的“datalake storage gen2”帐户。我正在 /mnt/data1 上安装所有内容

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" -> appID,
           "fs.azure.account.oauth2.client.secret" -> password,
           "fs.azure.account.oauth2.client.endpoint" -> ("https://login.microsoftonline.com/" + tenantID + "/oauth2/token"),
           "fs.azure.createRemoteFileSystemDuringInitialization"-> "true")
    
    dbutils.fs.mount(
    source = "abfss://" + fileSystemName + "@" + storageAccountName + ".dfs.core.windows.net/",
    mountPoint = "/mnt/data1",
    extraConfigs = configs)

到目前为止,一切都很好并且可以正常工作。 但是当我尝试使用以下命令从挂载位置访问一个文件时

val df = spark.read.csv("/mnt/data1/creodemocontainer/movies.csv")

我收到以下错误

java.io.FileNotFoundException: dbfs:/mnt/data1/creodemocontainer2/movies.csv
    at com.databricks.backend.daemon.data.client.DatabricksFileSystemV2.$anonfun$getFileStatus$2(DatabricksFileSystemV2.scala:775)

虽然我可以毫无问题地在 PowerBI 中连接和加载这些文件。 我没有从过去 2 天得到任何线索所以任何帮助将不胜感激。

提前致谢。

【问题讨论】:

请您使用dbutils.fs.ls检查文件是否存在? 这里是错误............ java.io.FileNotFoundException: dbfs:/mnt/data1/creodemocontainer/movies.csv at com.databricks.backend。 daemon.data.client.DatabricksFileSystemV2.$anonfun$getFileStatus$2(DatabricksFileSystemV2.scala:775) 感谢您提供线索。我不应该在阅读时添加容器名称。现在一切正常。 既然问题已经解决,能否请您发表一下答案? 【参考方案1】:

根据原帖者的评论分享答案:

我不应该在阅读时添加容器名称。

val df = spark.read.csv("/mnt/data1/creodemocontainer/movies.csv")

删除了容器名称,因为它已经调用了挂载点。现在一切正常

val df = spark.read.csv("/mnt/data1/movies.csv")

【讨论】:

以上是关于Azure databricks - 无法使用来自 datalake 存储 gen2 服务的 spark 作业读取 .csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

来自 Databricks Notebook 的 COSMOS DB 写入问题

如何强制 Azure 数据工厂数据流使用 Databricks

Databricks Connect:无法连接到 azure 上的远程集群,命令:“databricks-connect test”停止

无法使用 jdbc 和 spark 连接器从 databricks 集群连接到 Azure 数据库 for MySQL 服务器

无法在 azure databricks 中使用 spark 读取 csv 文件

无法从 databricks pyspark 工作人员写入 Azure Sql DataWarehouse