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

时间:2020-09-05 16:32:47

标签: apache-spark pyspark

我想使用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

1 个答案:

答案 0 :(得分:0)

我认为您可以通过过滤数据框来选择数据,并仅选择id列进行收集。

id_list = [x[0] for x in df.filter('Match = False').select('Row_id').collect()]
id_list

[2, 3, 4, 5, 6]