假设我有一个相当大的数据集,形式如下:
data = sc.parallelize([('Foo',41,'US',3),
('Foo',39,'UK',1),
('Bar',57,'CA',2),
('Bar',72,'CA',2),
('Baz',22,'US',6),
('Baz',36,'US',6)])
Run Code Online (Sandbox Code Playgroud)
我想要做的是仅根据第一,第三和第四列的值删除重复的行.
删除完全重复的行很简单:
data = data.distinct()
Run Code Online (Sandbox Code Playgroud)
第5行或第6行将被删除
但是,我如何仅删除基于第1,3和4列的重复行?即删除以下任何一个:
('Baz',22,'US',6)
('Baz',36,'US',6)
Run Code Online (Sandbox Code Playgroud)
在Python中,这可以通过使用指定列来完成.drop_duplicates().我怎样才能在Spark/Pyspark中实现同样的目标?