Je suis nouveau pour susciter et j'essaie de faire un distinct (). Count () basé sur certains champs d'un fichier CSV.
Structure CSV (sans en-tête):
id,country,type
01,AU,s1
02,AU,s2
03,GR,s2
03,GR,s2
pour charger .csv j'ai tapé:
lines = sc.textFile("test.txt")
puis un décompte distinct sur lines
a renvoyé 3 comme prévu:
lines.distinct().count()
Mais je ne sais pas comment faire un décompte distinct basé sur: disons id
et country
.
Dans ce cas, sélectionnez les colonnes à prendre en compte, puis comptez:
sc.textFile("test.txt")\
.map(lambda line: (line.split(',')[0], line.split(',')[1]))\
.distinct()\
.count()
Pour plus de clarté, vous pouvez optimiser le lambda pour éviter d'appeler line.split
à deux reprises.
La ligne de séparation peut être optimisée comme suit:
sc.textFile("test.txt").map(lambda line: line.split(",")[:-1]).distinct().count()