Pyspark 使用 .filter() 过滤掉空列表

Pyspark filter out empty lists using .filter()

我有一个 pyspark 数据框,其中一列填充有列表,包含条目或仅包含空列表。我想有效地过滤掉所有包含空列表的行。

import pyspark.sql.functions as sf
df.filter(sf.col('column_with_lists') != []) 

returns 我出现以下错误:

Py4JJavaError: An error occurred while calling o303.notEqual.
: java.lang.RuntimeException: Unsupported literal type class

也许我可以检查列表的长度并强制它应该 > 0(参见 here)。但是,如果我使用 pyspark-sql 并且 filter 甚至允许 lambda,我不确定这种语法是如何工作的。

也许是为了说明,我有多个列,但想对一个列应用上述过滤器,删除所有条目。链接的 SO 示例在单个列上进行过滤。

提前致谢!

所以看起来它就像使用 sql.functions:

中的大小函数一样简单
import pyspark.sql.functions as sf
df.filter(sf.size('column_with_lists') > 0)