PySpark读取CSV后show()输出含+--+分隔线,如何去除?
解决PySpark df.show()输出中的分隔线问题
df.show()的默认输出是Spark自带的表格格式,那些+--+分隔线是表格边框,和读取CSV时设置的分隔符、编码、inferSchema等参数无关,要去除这些分隔线可以用以下几种方法:
方法1:借助Pandas打印(适合小数据集)
将Spark DataFrame转换为Pandas DataFrame后打印,Pandas的默认输出没有表格边框:
from pyspark.sql import SparkSession spark = SparkSession.builder.appName("Enem_ETL").getOrCreate() df = spark.read.format('csv') \ .option('header', 'true') \ .option('inferSchema', 'true') \ .load(r'C:\Users\GRUPO BARBOSA\Documents\Python\Eng Dados\enem\microdados_enem_2021\DADOS\MICRODADOS_ENEM_2021.csv') # 转换为Pandas并打印无分隔线结果 df.toPandas().print()
注意:此方法会将全量数据拉到Driver节点内存,大数据集可能导致内存溢出。
方法2:自定义控制台输出格式
手动拼接表头和每行数据,用制表符或空格分隔内容:
# 获取表头并打印 headers = df.columns print("\t".join(headers)) # 遍历每行数据并打印(小数据集适用) for row in df.collect(): print("\t".join(map(str, row)))
如果是大数据集,建议限制行数,比如用df.limit(10).collect()只打印前10行,避免内存压力。
方法3:导出为无格式文本文件(适合大数据集)
如果不需要控制台输出,而是要保存无分隔线的文件,可以通过RDD转换后保存:
# 将每行数据转换为制表符分隔的字符串,保存到指定路径 df.rdd.map(lambda x: "\t".join(map(str, x))).saveAsTextFile("C:/你的输出路径")
内容的提问来源于stack exchange,提问作者Gabriel Pedrosa
相关产品推荐
相关产品推荐

