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

Databricks中Python lambda筛选文件被误识别为PySpark报错如何解决?

报错原因

你遇到的报错是Python内置的filter函数被PySpark的同名函数覆盖导致的。PySpark的pyspark.sql.functions.filter是用于操作Spark列对象的方法,不接受lambda作为入参,和Python内置的filter功能完全不同。你之前混用代码没遇到问题,是因为之前没有把PySpark的filter导入到当前命名空间覆盖内置函数。


解决方案

  • 方案1:改用列表推导式(最推荐,无命名冲突风险,可读性更高)
    完全避开filter函数的冲突,直接用原生Python语法实现相同逻辑:

    import os
    csv_dir = '/my_dir/'
    # 如果是DBFS路径需要加/dbfs前缀,改成 csv_dir = '/dbfs/my_dir/'
    csv_paths = [x for x in os.listdir(csv_dir) if '.csv' in x]
    
  • 方案2:显式调用Python内置filter
    强制指定调用内置的filter,不受覆盖的PySpark函数影响:

    csv_paths = list(__builtins__.filter(lambda x: '.csv' in x, os.listdir(csv_dir)))
    
  • 方案3:清理命名空间冲突
    检查当前Notebook之前的代码,避免使用from pyspark.sql.functions import *的全量导入方式,建议给PySpark函数库指定别名使用:

    # 规范导入方式,不会污染内置函数命名空间
    import pyspark.sql.functions as F
    # 后续使用PySpark函数时加F.前缀,比如F.filter(col("xxx"))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:45:04