我正在尝试使用Spark进行某种过滤 . 我有一个如下所示的数据框:
ID Property#1 Property#2 Property#3
-----------------------------------------
01 a b c
01 a X c
02 d e f
03 i j k
03 i j k
我希望给定ID的属性是相同的 . 在上面的示例中,我想过滤掉以下内容:
ID Property#2
---------------
01 b
01 X
请注意,只要属性相同(例如,第一个表中的ID为'03'),就可以在数据框中重复ID . 代码需要尽可能高效,因为我计划将其应用于具有> 10k行的数据集 . 我尝试使用DataFrame API中的 distinct
函数提取不同的行,使用 groupBy
将它们分组到ID列,并使用 countDistinct
函数聚合结果,但遗憾的是我无法获得代码的工作版本 . 我实现它的方式似乎也很慢 . 我想知道是否有人可以提供一些关于如何解决这个问题的指示 .
谢谢!
1 回答
例如,您可以聚合和加入 . 首先,您必须创建一个查找表:
然后过滤记录: