尝试访问Azure数据库中的Azure DBFS文件系统时发生装载错误

2024-10-02 20:33:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我能够建立到Databricks文件存储DBFS的连接并访问该文件存储。在

使用Pyspark读、写和转换数据是可能的,但是当我尝试使用本地Python API(如pathlibOS模块)时,我无法通过DBFS文件系统的第一级

我可以用一个神奇的命令:

%fs ls dbfs:\mnt\my_fs\...哪种方法能很好地工作并列出所有子目录?在

但是如果我做os.listdir('\dbfs\mnt\my_fs\'),它将返回['mount.err']作为返回值

我在一个新的集群上进行了测试,结果是一样的

我在Databricks Runtine版本6.1和apachespark 2.4.4上使用Python

有人能给我建议吗。在

编辑:

连接脚本:

我使用了Databricks CLI库来存储我的凭证,这些凭证是根据Databricks文档格式化的:

 def initialise_connection(secrets_func):
  configs = secrets_func()
  # Check if the mount exists
  bMountExists = False
  for item in dbutils.fs.ls("/mnt/"):
      if str(item.name) == r"WFM/":
          bMountExists = True
      # drop if exists to refresh credentials
      if bMountExists:
        dbutils.fs.unmount("/mnt/WFM")
        bMountExists = False

      # Mount a drive
      if not (bMountExists):
          dbutils.fs.mount(
              source="adl://test.azuredatalakestore.net/WFM",
              mount_point="/mnt/WFM",
              extra_configs=configs
          )
          print("Drive mounted")
      else:
          print("Drive already mounted")

Api Error


Tags: 文件ifmyfsls凭证mountconfigs
2条回答

更新答案:使用Azure Data Lake Gen1存储帐户:dbutils具有访问adls Gen1令牌/访问凭据的权限,因此mnt point中的文件列表在std py api调用无法访问creds/spark conf的情况下起作用,您看到的第一个调用是列出文件夹,并且它不会调用adls api

我已经在Databricks运行时版本6.1(包括apachespark2.4.4、scala2.11)中进行了测试

命令作为例外工作,没有任何错误消息。在

enter image description here

更新:内部文件夹的输出。在

enter image description here

希望这有帮助。你能告诉我们吗。在

我们在连接到azuregeneration2存储帐户(没有分层名称空间)时也遇到了相同的问题。在

当将Databricks运行时环境从5.5切换到6.x时,似乎出现了这个错误。但是,我们还不能确定发生这种情况的确切原因。我们假设某些功能可能已被弃用。在

相关问题 更多 >