如何在Python中读取并打印Spark输出的CSV格式文件夹内容?
解决Spark输出CSV文件夹的读取问题
Spark输出CSV时默认会生成包含元文件和分片数据文件的文件夹,你可以根据自身环境选择以下两种读取方案:
方案1:使用PySpark读取(推荐,无需处理分片逻辑)
如果你本地配置了PySpark环境,可直接读取整个输出文件夹,Spark会自动跳过元数据文件、合并所有分片数据:
from pyspark.sql import SparkSession # 初始化SparkSession spark = SparkSession.builder.appName("read_csv_output").getOrCreate() # 读取整个output文件夹,可根据需要加header=True、sep=','等参数 df = spark.read.csv("/path/to/your/output", header=True) # 打印内容 df.show()
方案2:无Spark环境,用原生Python读取
需要手动过滤_SUCCESS等元文件,只读取所有以part-开头的数据分片文件:
import os output_dir = "/path/to/your/output" # 遍历目录下所有文件,过滤出数据分片 part_files = [f for f in os.listdir(output_dir) if f.startswith("part-")] for file_name in part_files: file_path = os.path.join(output_dir, file_name) with open(file_path, "r", encoding="utf-8") as f: print(f.read())
方案3:无Spark环境,用Pandas读取合并
如果需要将内容转为DataFrame处理,可以用pandas逐个读取分片后合并:
import os import pandas as pd output_dir = "/path/to/your/output" part_files = [f for f in os.listdir(output_dir) if f.startswith("part-")] df_list = [] for file_name in part_files: file_path = os.path.join(output_dir, file_name) # 可根据实际CSV格式调整sep、header等参数 df_list.append(pd.read_csv(file_path)) # 合并所有分片 full_df = pd.concat(df_list, ignore_index=True) # 打印内容 print(full_df)
内容的提问来源于stack exchange,提问作者tomiyos654
相关产品推荐
相关产品推荐

