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

PySpark筛选特定行范围报错求助:TypeError问题排查

解决PySpark添加行号筛选时报错TypeError: 'int' object is not callable的问题

报错原因

核心问题是代码中使用的PySpark函数名(如row_number、lit或col)被错误当作变量赋值成了整数,导致调用函数时实际是调用一个整数,触发"int不可调用"的错误;另外你的代码缺少必要的函数导入语句,也会加剧这个问题。

修正步骤

  1. 补充导入必需的PySpark函数
    你的代码仅导入了Window,但row_number、lit、col这些核心函数未导入,必须补充:

    from pyspark.sql.window import Window
    from pyspark.sql.functions import row_number, lit, col
    
  2. 排查变量命名冲突
    检查之前的代码,确保没有将row_number、lit、col这类函数名用作变量名(比如写过row_number = 10、col = 5这类代码),如果有,修改这些变量的名称。

  3. 使用修正后的完整代码

    # 导入依赖
    from pyspark.sql.window import Window
    from pyspark.sql.functions import row_number, lit, col
    
    # 定义窗口(将整个DataFrame作为单个分区,按固定值排序保证顺序稳定)
    w = Window().partitionBy(lit('a')).orderBy(lit('a'))
    # 添加行号列
    df1 = my_dataframe.withColumn("row_num", row_number().over(w))
    # 筛选行号范围
    display(df1.filter(col("row_num").between(1,40)))
    

额外简化方案

如果你的需求只是获取DataFrame的前40行,可直接使用limit方法,代码更简洁:

display(my_dataframe.limit(40))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:27:07