étincelle de comptage de valeurs distinctes par clé
Je suis un newbie et de savoir-dessous de commandes. Ils donnent le nombre de valeurs clés et une liste de valeurs par clé.
dayToHostPairTuple.countByKey()
dayToHostPairTuple.groupByKey()
est-il une alternative simple à countByKey qui va compter uniquement les valeurs distinctes par clé?
#########################################==
Code ci-dessous fonctionne pour moi. Elle est basée sur les réponses que j'ai reçu.
dayToHostPairTuple = access_logs.map(lambda log: (log.date_time.day, log.host))
dayToHostPairTuple=dayToHostPairTuple.sortByKey()
print dayToHostPairTuple.distinct().countByKey()
- Je ne suis pas sûr de comprendre ce que vous essayez d'atteindre, mais si je suis correct, vous pouvez le résoudre par la cartographie de votre k,v (k,v), 1 puis reduceByKey sur que, vous allez vous retrouver avec [(k,v), le comte]
- J'ai fatigué de votre suggestion. Mon code est ci-dessous
dayToHostPairTuple = access_logs.map(lambda log: (str(log.date_time.day)+"-"+str(log.host),1))
print dayToHostPairTuple.reduceByKey()
Comment dois-je changer mon deuxième ligne? - Vous ne voulez pas de les combiner comme une chaîne de caractères que vous souhaitez les combiner comme un python structure de données. Donc, quelque chose comme dayToHostPairTuple.map(lambda k,v: (k,v),1 )
Vous devez vous connecter pour publier un commentaire.
En supposant que les valeurs sont hashable vous pouvez utiliser
distinct
aveccountByKey
:ou
reduceByKey
:dayToHostPairTuple.distinct().countByKey()
œuvres. Est-il possible de trier par clé, de sorte que la sortie est dans l'ordre croissant de la clé? J'ai essayédayToHostPairTuple.distinct().countByKey().sortByKey(true)
mais j'obtiens une erreur 🙁sortByKey
. Localement (countByKey) - il simplement d'un standard de Python dict.Vous pouvez extraire les éléments et de les trier.true
n'est pas valide Python booléenne. Et countByKey ne retourne pas CAJe dirais
dayToHostPairTuple.countApproxDistinctByKey(0.005)
De l'aide: