尝试访问Azure Databricks中的Azure DBFS文件系统时出现安装错误

时间:2019-11-22 15:07:50

标签: python azure databricks azure-databricks

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

可以使用Pyspark读取,写入和转换数据,但是当我尝试使用本地Python API(例如pathlibOS模块)时,我无法超越DBFS文件系统

我可以使用魔术命令:

%fs ls dbfs:\mnt\my_fs\...可以完美工作并列出所有子目录吗?

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

我已经在新集群上对此进行了测试,结果是相同的

我在带有Apache Spark 2.4.4的Databricks Runtine版本6.1上使用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

2 个答案:

答案 0 :(得分:1)

更新答案:使用Azure Data Lake Gen1存储帐户:dbutils可以访问adls gen1令牌/访问凭据,因此mnt点内的文件列表可以在std py api调用无法访问的情况下使用creds / spark conf,您看到的第一个调用是列出文件夹,并且没有对adls api进行任何调用。

我已经在Databricks Runtime版本6.1(包括Apache Spark 2.4.4,Scala 2.11)中进行了测试

命令按例外方式工作,没有任何错误消息。

enter image description here

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

enter image description here

希望这会有所帮助。您能尝试并告诉我们吗?

答案 1 :(得分:1)

在连接到Azure Generation2存储帐户(无层次名称空间)时,我们遇到了相同的问题。

将Databricks运行时环境从5.5切换到6.x时似乎发生了错误。但是,我们无法查明确切原因。我们假设某些功能可能已被弃用。