如何在Databricks中读取并显示指定路径下所有文件的内容?
解决方案
dbutils.fs.ls() 仅能列出文件/目录的元信息(路径、大小等),无法直接读取文件内容。要实现显示所有目标路径下文件的内容,需要先遍历路径下的所有文件,再逐个读取内容。
文本文件读取示例
如果你的文件是文本格式(如.txt、.log等),可以用以下代码:
# 定义所有要处理的目录路径 target_dirs = [ "/mnt/nikhil/2024", "/mnt/nikhil/2023", "/mnt/akhil/2024", "/mnt/akhil/2023" ] # 遍历每个目标目录 for dir_path in target_dirs: # 获取目录下的所有条目(文件+子目录) items = dbutils.fs.ls(dir_path) # 筛选出文件(排除子目录) file_items = [item for item in items if not item.isDir()] print(f"=== 目录 {dir_path} 下的文件内容 ===") # 逐个读取并打印文件内容 for file in file_items: file_path = file.path print(f"\n--- 文件路径: {file_path} ---") # 读取文件内容(默认读取前65536字节,大文件需调整) file_content = dbutils.fs.head(file_path) print(file_content)
大文件/其他格式文件处理
- 如果文件过大,
dbutils.fs.head()无法读取完整内容,可使用Spark的读取API:# 读取大文本文件并显示所有内容 df = spark.read.text(file_path) df.show(df.count(), truncate=False) - 针对CSV、Parquet等结构化文件,需对应使用Spark的专用读取方法:
# CSV文件(含表头) csv_df = spark.read.csv(file_path, header=True) csv_df.show() # Parquet文件 parquet_df = spark.read.parquet(file_path) parquet_df.show()
内容的提问来源于stack exchange,提问作者nikhil
相关产品推荐
相关产品推荐

