如何高效地查找pyspark中是否存在记录?

voj3qocg  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(359)

给定一个pysparkDataframe,我想知道是否 A 存在一个值(例如。 5 ). 第一种方法是

df.filter("A = 5")

但是通过这种方式,函数将查找所有具有该值的记录,所花费的时间比预期的要多。相反,如果我知道我在第一条记录中找到了值,我就不需要继续迭代了。
例如:

+---+
| A |
+---+
| 0 | 
| 5 |
| 1 |
| 9 |
| 1 |
| 4 |
| 1 |
...
| 5 |
| 1 |

假设它包含了数千条记录,我想得到一个快速结果,因为第二条记录是5,不需要检查整个DF(当然,没有保证性能,因为我可能不走运,5只不过是最后一条记录,但是如果我能节省资源,那就太好了!)
你知道怎么做到吗?

s6fujrry

s6fujrry1#

一种方法可能是

df.filter("A = 5").head()

通过一些测试,我发现在执行时间上有一个明显的差异,而spark引擎似乎只以这种方式返回满足条件的第一个事件。
如果它回来了 null 记录不存在(显然它必须遍历所有的datframe),否则将返回一个row对象。

相关问题