如何使用pyspark递归获取存储在dbfs文件夹中的Excel文件?
Posted
技术标签:
【中文标题】如何使用pyspark递归获取存储在dbfs文件夹中的Excel文件?【英文标题】:How to recursively get Excel files stored in a folder in dbfs using pyspark? 【发布时间】:2019-11-13 04:56:57 【问题描述】:我在 dbfs 中安装了一个路径,我需要从给定文件夹中提取 Excel 文件路径,并且同一文件夹包含 Excel 文件或包含 Excel 文件的子文件夹。当前代码仅在一个文件夹中提供 Excel 文件,而不在子文件夹中提供。
files = dbutils.fs.ls('/raw/internal/srange/2018_11_30_00_22_11/')
for file in files:
if file.path.endswith('xlsx'):
path = '/dbfs' + file.path[5:]
print(path)
【问题讨论】:
【参考方案1】:你也应该检查目录
def walk_dir(dir_path):
dir_files = dbutils.fs.ls(dir_path)
excel_files = []
for file in dir_files:
if file.isDir():
excel_files.extend(walk_dir(file.path))
elif file.path.endswith('.xlsx'):
excel_files.append(os.path.join('/dbfs', file.path[5:]))
return excel_files
all_excel = walk_dir('/raw/internal/srange/2018_11_30_00_22_11/')
我还没有尝试过代码,所以它可能是错误的。
【讨论】:
【参考方案2】:这是我推荐的:
for file1 in dbutils.fs.ls("dbfs:/raw/internal/srange/2018_11_30_00_22_11/"):
if '.xlsx' in file1.name:
print (file1.name)
for file2 in dbutils.fs.ls("dbfs:/raw/internal/srange/2018_11_30_00_22_11/"+file1.name):
if '.xlsx' in file2.name:
print (file2.name)
for file3 in dbutils.fs.ls("dbfs:/raw/internal/srange/2018_11_30_00_22_11/"+file1.name+file2.name):
if '.xlsx' in file3.name:
print (file3.name)
【讨论】:
以上是关于如何使用pyspark递归获取存储在dbfs文件夹中的Excel文件?的主要内容,如果未能解决你的问题,请参考以下文章
在Databricks(DBFS)中递归列出目录和子目录的文件
尝试访问 Azure Databricks 中的 Azure DBFS 文件系统时出现挂载错误
如何在 Databricks pyspark 中导入 Excel 文件