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)
我有一个 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)