无法处理pyspark中包含df.collect()方法的代码



我想使用pyspark获取数据帧中存在"Match=False"的"Row_id"值。我使用的以下代码工作得很好。但是如果数据帧的行数大于1000,则相同的代码无法执行。有人能指导我对大尺寸文件达到同样的效果吗?文件的格式可以是csv、json、parquet等任何格式。

listt=[]
for x in range(len(dat.collect())):
for y in range(len(dat.collect()[x])):
if dat.collect()[x][y]==False:
listt=listt+[dat.collect()[x][0]]

我的数据框如下所示。

Row_id    Name   Months       Match
1    elissa       20          TRUE
2    carlson      30          FALSE
3    jose         13          FALSE
4    sara         2           FALSE
5    meera        5           FALSE
6    kaarlos      8           FALSE
7    chris        1           TRUE
8    bruse        9           TRUE
9    john         24          TRUE
10    deppy        35          TRUE

我认为您可以通过过滤数据帧来选择数据,并且只选择id列collect。

id_list = [x[0] for x in df.filter('Match = False').select('Row_id').collect()]
id_list
[2, 3, 4, 5, 6]

最新更新