Suppression des doublons de lignes en fonction des colonnes spécifiques dans un EDR/Spark DataFrame

Disons que j'ai une assez grande base de données dans le formulaire ci-dessous:

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)])

Ce que je voudrais faire est de supprimer les lignes en double sur la base des valeurs de la première,la troisième et la quatrième colonnes seulement.

De supprimer totalement les lignes en double est simple:

data = data.distinct()

et ligne 5 ou ligne 6 sera supprimé

Mais comment puis-je seulement supprimer les doublons de lignes basés sur des colonnes 1, 3 et 4 seulement? c'est à dire supprimer soit un, un de ces:

('Baz',22,'US',6)
('Baz',36,'US',6)

En Python, ce qui pourrait être fait en spécifiant les colonnes avec .drop_duplicates(). Comment puis-je obtenir le même dans Spark/Pyspark?

InformationsquelleAutor Jason | 2015-05-14