列出坐在数据湖中的文件夹中的所有文件

时间:2019-11-07 14:41:41

标签: python scala databricks azure-data-lake azure-databricks

我试图获取一个文件夹中所有文件的清单,该文件夹包含几个子文件夹,所有这些子文件夹都位于一个数据湖中。这是我正在测试的代码。

a[i]

我还尝试了此链接中的示例代码:

Python list directory, subdirectory, and files

我正在使用Azure Databricks。我愿意使用Scala来完成这项工作。到目前为止,没有任何事情对我有用。每次,我总是得到一个空的数据框。我相信这已经很接近了,但是我一定缺少一些小东西。有想法吗?

2 个答案:

答案 0 :(得分:1)

Databricks文件系统(DBFS)是安装在Azure Databricks工作区中的分布式文件系统,可在Azure Databricks群集上使用。如果使用本地文件API,则必须引用Databricks文件系统。 Azure Databricks使用FUSE装载 / dbfs 配置每个群集节点,该群集允许在群集节点上运行的进程使用本地文件API读写基础分布式存储层(另请参见documentation

因此,必须在路径 / dbfs 中:

root = "/dbfs/mnt/rawdata/parent/"

与使用Databricks Filesystem Utility(DBUtils)的操作不同。文件系统实用程序访问Databricks文件系统,使使用Azure Databricks作为文件系统更加容易:

dbutils.fs.ls("/mnt/rawdata/parent/")

对于较大的Data Lakes,我可以在Knowledge Base中推荐一个Scala示例。 优点是,它将为所有分发的子叶运行列表,因此对于较大的目录也将起作用。

答案 1 :(得分:0)

我有这个工作。

from azure.storage.blob import BlockBlobService 

blob_service = BlockBlobService(account_name='your_account_name', account_key='your_account_key')

blobs = []
marker = None
while True:
    batch = blob_service.list_blobs('rawdata', marker=marker)
    blobs.extend(batch)
    if not batch.next_marker:
        break
    marker = batch.next_marker
for blob in blobs:
    print(blob.name)

唯一的前提条件是您需要导入azure.storage。因此,在“群集”窗口中,单击“新安装”-> PyPI>程序包=“ azure.storage”。最后,点击“安装”。

相关问题