Frage

In dem Beispiel für die MAX -Funktion für PYSPARK:

Pysspark

>>> rdd = sc.parallelize([1.0, 5.0, 43.0, 10.0])
>>> rdd.max()
43.0
>>> rdd.max(key=str)
5.0

Q1. Wie wird es auf 5.0 bewertet, wenn Key = str? Basierend auf der Konvertierung in Zeichen/String -Typ?

Q2. Gibt es einen Wert, den der Parameter "Schlüssel" annehmen kann?

Ich fand auch die Funktionsdefinition von "max" an diesem Ort

https://github.com/adobe-research/spark-gpu/blob/master/src/rdd.py

def max(self, key=None):
        """
        Find the maximum item in this RDD.
        :param key: A function used to generate key for comparing
        >>> rdd = sc.parallelize([1.0, 5.0, 43.0, 10.0])
        >>> rdd.max()
        43.0
        >>> rdd.max(key=str)
        5.0
        """
        if key is None:
            return self.reduce(max)
        return self.reduce(lambda a, b: max(a, b, key=key))
War es hilfreich?

Lösung

Sie übergeben eine Funktion an den Schlüsselparameter, mit dem Sie Ihre Zeilen praktisch auf den Maximalwert überprüfen können. In diesem Fall übergeben Sie die STR -Funktion, die Ihre Schwimmer in Saiten umwandelt. Da '5.0'> '14 .0 'aufgrund der Art der String -Vergleiche zurückgegeben wird. Eine wahrscheinlichere Verwendung ist die Verwendung des Schlüsselparameters wie folgt:

test = sc.parallelize([(1, 2), (4,3), (2,4)])
test.max(key = lambda x: -x[1])
(1,2)

Wegen der - wir sortieren absteigend und das X [1] bedeutet, dass wir den zweiten Eintrag in unseren Tupeln als Schlüssel verwenden.

Andere Tipps

Vergleicht den Wert basierend auf der Position in der Zahl

Die Zahlen werden vom höchsten bis niedrigsten verglichen. Hier 9> 8, wo 8 von 89 stammt:

x = spark.sparkContext.parallelize([1,2,3,4,5,6,7,89,7,33,9])
x.max()           #Output 89
x.max(key=str)    #Output 9
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top