首页 > 解决方案 > 无法处理 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

标签: apache-sparkpyspark

解决方案


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

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

[2, 3, 4, 5, 6]

推荐阅读