我有一个PyparkDataframe,如下所示:
+------+------+
| A| B|
+------+------+
| 1| 2|
| 1| 3|
| 2| 3|
| 2| 5|
+------+------+
我想在表上做一个查找,看看是否存在一个特定的行。例如,测试 A = 2
, B = 5
代码应该返回 True
以及 A = 2
, B = 10
代码应该返回 False
.
我尝试了以下代码: df[(df['A'] == 1) & (df['B'] == 2)].rdd.isEmpty()
不幸的是,这段代码需要很长时间才能执行,而且由于这是一个将要执行多次的查找(对于a和b的不同值),我希望有一个更快的方法来完成这项任务。
我正在考虑的其他解决方案有:
将pysparkDataframe转换为pandasDataframe,因为行查找速度更快
使用 .where()
或者 .filter()
虽然从我的尝试来看,我并不认为这两种方法都会更快
使用 .count()
结束 isEmpty()
请告诉我其他人在这种情况下做了什么。谢谢!
1条答案
按热度按时间sxpgvts31#
最好从要查找的条目中创建一个sparkDataframe,然后执行
semi join
或者一个anti join
获取查找数据框中存在或不存在的行。这应该比逐个检查条目更有效。