如何在Databricks中使用os.walk()来计算Azure datalake中的目录大小

问题描述 投票:0回答:1

如何使用Databricks中的os.walk来计算Azure datalake中的目录大小。我正在使用的Python版本是3。

我首先使用递归方法来获取目录大小,当文件路径在目录内更深时出现OOM错误时,失败。

现在,我很好奇os.Walk()是否可以工作。

任何片段都会有所帮助。

递归函数代码如下:[这在其更深的路径时失败,所以,我需要不同的解决方案]

from dbutils import FileInfo
from typing import List

root_path = "/mnt/ADLS/...../..../"

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:
            <some code>
      else:
            <some code>
  return loop_path(dbutils.fs.ls(path), 0.0)

discover_size(root_path, verbose=True)
python python-3.x azure databricks azure-data-lake
1个回答
0
投票

您可以尝试一下并提供反馈吗?

# Python
import sys, os
root = "/dbfs/mnt/rawdata/"
path = os.path.join(root, "targetdirectory")
for path, subdirs, files in os.walk(root):
    for name in files:
        print(os.path,joint(path, name))

或者也许是这个?

# Python
import sys, os
import pandas as pd

mylist = []
    root = '/dbfs/mnt/rawdata/'
    path = os.path.join(root, 'targetdirectory')
    for path, subdirs, files in os.walk(root):
        for name in files:
            mylist.append(os.path.join(path, name))

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

display(df)

# convert python df to spark df
spark_df = spark.createDataframe(df)
# write df out as table
spark_df.write.csv("/rawdata/final.csv")
© www.soinside.com 2019 - 2024. All rights reserved.