You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确展示列数较多的PySpark DataFrame 实现滚动查看效果

问题

我有一个列数非常多的大型PySpark DataFrame,需要正常展示其内容,不想要默认的垂直折行展示形式,是否有支持滚动查看的方案?
DataFrame默认折行展示效果

可行方案

根据你使用PySpark的不同环境,可以选对应的实现方式:

Jupyter Notebook/Lab 环境

这是最常遇到宽表折行问题的场景,两种实现方式都能做到不折行、横向滚动查看:

  • 直接配置Spark原生的eagerEval展示规则 + 自定义样式
    先设置Spark运行参数,关闭内容截断:
    spark.conf.set("spark.sql.repl.eagerEval.enabled", True)
    spark.conf.set("spark.sql.repl.eagerEval.maxNumRows", 20) # 自定义要展示的行数
    spark.conf.set("spark.sql.repl.eagerEval.truncate", False) # 关闭列值截断
    
    新建单元格运行以下CSS配置,强制表格不折行、开启横向滚动:
    %%html
    <style>
    table.dataframe tr {
        white-space: nowrap;
    }
    .output_area .output_subarea {
        overflow-x: auto;
    }
    </style>
    
    配置完成后,直接在单元格里输入DataFrame变量名运行(不需要调用show()方法),输出的表格就不会折行,超出页面宽度的部分可以通过横向滚动条查看。
  • 采样转pandas展示
    先配置pandas的展示规则,关闭自动折行:
    import pandas as pd
    pd.set_option('display.max_columns', None)
    pd.set_option('display.expand_frame_repr', False)
    # 必须加limit限制拉取的行数,避免全量数据拉取撑爆驱动内存
    df.limit(100).toPandas()
    
    Jupyter会自动给超出宽度的pandas表格加上横向滚动条,不会出现垂直折行的情况。

终端PySpark Shell环境

直接调整show()方法的参数即可:

# 第一个参数为展示行数,truncate=False关闭列截断,vertical=False关闭垂直展示模式
df.show(n=20, truncate=False, vertical=False)

现代终端(iTerm2、Windows Terminal、WSL终端等)默认支持横向滚动,超出终端宽度的内容不会被强制折行,直接滑动终端滚动条就能查看所有列。

增强交互方案

如果需要搜索、排序、滚动查看更多行,可以采样数据后用交互式表格库展示:

from itables import init_notebook_mode
init_notebook_mode(all_interactive=True)
# 同样注意先limit采样,不要直接转全量大表
df.limit(1000).toPandas()

这种方式生成的表格自带横向、纵向滚动条,支持列排序、关键词搜索,适合列数、行数都比较多的采样查看场景。

注意:所有调用toPandas()的操作都会把数据从集群拉取到Spark驱动节点本地内存,一定要提前用limit()限制采样的行数,大表全量拉取会直接导致驱动节点OOM。

内容的提问来源于stack exchange,提问作者rrryok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:03:22