如何循环访问 Azure Databricks 中的 Azure Datalake Store 文件

How to loop through Azure Datalake Store files in Azure Databricks

我目前正在使用以下命令成功列出 Azure Datalake Store gen1 中的文件:

dbutils.fs.ls('mnt/dbfolder1/projects/clients')

这个文件夹的结构是

- client_comp_automotive_1.json [File]
- client_comp_automotive_2.json [File]
- client_comp_automotive_3.json [File]
- client_comp_automotive_4.json [File]
- PROCESSED [Folder]

我想遍历此文件夹中的那些 (.json) 文件并一个一个地处理它们,这样我就可以在错误或其他情况下采取行动并将成功处理的文件移动到子文件夹。

如何在 python 中执行此操作?我试过了

folder = dbutils.fs.ls('mnt/dbfolder1/projects/clients')
files = [f for f in os.listdir(folder) if os.path.isfile(f)]

但这不起作用。 os 未知。我如何在 Databricks 内执行此操作?

找了两天答案很简单:

files = dbutils.fs.ls('mnt/dbfolder1/projects/clients')

for fi in files: 
  print(fi.path)

相同的Scala版本(带ADLS路径)

val dirList = dbutils.fs.ls("abfss://<container>@<storage_account>.dfs.core.windows.net/<DIR_PATH>/")

// option1
dirList.foreach(println)

// option2
for (dir <- dirList) println(dir.name)

另一种无缝转换为 python 本地安装的方法是:

import os
os.listdir("/dbfs/mnt/projects/clients/")