列出位于数据湖中的文件夹中的所有文件

新手上路,请多包涵

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

 import sys, os
import pandas as pd

mylist = []
root = "/mnt/rawdata/parent/"
path = os.path.join(root, "targetdirectory")

for path, subdirs, files in os.walk(path):
    for name in files:
        mylist.append(os.path.join(path, name))

df = pd.DataFrame(mylist)
print(df)

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

Python 列出目录、子目录和文件

我在 Azure Databricks 工作。我愿意使用 Scala 来完成这项工作。到目前为止,没有什么对我有用。每次,我都会得到一个空的数据框。我相信这非常接近,但我一定遗漏了一些小东西。想法?

原文由 ASH 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 629
2 个回答

我得到这个工作。

 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 。因此,在 Clusters 窗口中,单击“Install-New”-> PyPI > package = ‘azure.storage’。最后,单击“安装”。

原文由 ASH 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

所以在路径 /dbfs 中:必须包含:

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

这与使用 Databricks 文件系统实用程序(DBUtils) 不同。文件系统实用程序访问 Databricks 文件系统,从而更容易将 Azure Databricks 用作文件系统:

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

对于更大的数据湖,我可以推荐 知识库 中的 Scala 示例。优点是它为所有分发的子叶运行列表,因此也适用于更大的目录。

原文由 Hauke Mallow 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题