gpt4 book ai didi

python - 如何使用 PySpark 计算 ADLS 中的目录大小?

转载 作者:行者123 更新时间:2023-12-05 08:50:47 26 4
gpt4 key购买 nike

我想计算包含子文件夹和子文件的目录(例如- XYZ)大小。我想要 XYZ 中所有文件和所有内容的总大小。

我可以找出特定路径内的所有文件夹。但我想要所有的大小。我也看到了

显示(dbutils.fs.ls("/mnt/datalake/.../XYZ/.../abc.parquet"))

给我 abc 文件的数据大小。但我想要 XYZ 的完整大小。

最佳答案

dbutils.fs.ls 没有像 cpmvrm 这样的递归功能.因此,您需要自己进行迭代。这是一个片段,可以为您完成任务。从 Databricks Notebook 运行代码。

from dbutils import FileInfo
from typing import List

root_path = "/mnt/datalake/.../XYZ"

def discover_size(path: str, verbose: bool = True):
def loop_path(paths: List[FileInfo], accum_size: float):
if not paths:
return accum_size
else:
head, tail = paths[0], paths[1:]
if head.size > 0:
if verbose:
print(f"{head.path}: {head.size / 1e6} MB")
accum_size += head.size / 1e6
return loop_path(tail, accum_size)
else:
extended_tail = dbutils.fs.ls(head.path) + tail
return loop_path(extended_tail, accum_size)

return loop_path(dbutils.fs.ls(path), 0.0)

discover_size(root_path, verbose=True) # Total size in megabytes at the end

如果该位置安装在 dbfs 中。然后您可以使用 du -h 方法(尚未测试)。如果您在笔记本中,请使用以下内容创建一个新单元格:

%sh
du -h /mnt/datalake/.../XYZ

关于python - 如何使用 PySpark 计算 ADLS 中的目录大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61312078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com