【发布时间】:2020-05-19 12:12:43
【问题描述】:
在我的 Python 脚本中,我确定了 Azure Datalake 存储 Gen2 中的目录大小。 在我检查更大的目录之前,代码可以正常工作。
import sys
from dbutils import FileInfo
from typing import List
sys.setrecursionlimit(2000)
root_path = "/mnt/datalake/.../"
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:
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)
首先查看OOM(Out of Memory)问题并添加
sys.setrecursionlimit(2000)。
现在,另一个错误-
RecursionError: maximum recursion depth exceeded in comparison
如何解决这个问题。
【问题讨论】:
-
向我们展示您的代码。您的代码中可能只是一个无限递归错误。
-
@AKX 请稍等。我将添加代码
-
@AKX 你现在可以检查一下吗。
-
新文件夹的深度太大
-
@Mathix420 是的,因为它有许多子文件夹和文件。但有什么办法解决
标签: python python-3.x apache-spark pyspark databricks