ich diese beiden Datenrahmen haben:Pyspark: Multiplizieren Spalten aus verschiedenen Tabellen
df1 = sc.parallelize([
['u1', 0.5],
['u2', 0.2],
['u3', 0.1],
['u4', 0.9],
['u5', 0.7]
]).toDF(('person', 'score'))
df2 = sc.parallelize([
['d1', 0.0],
['d2', 0.5],
['d3', 0.7],
]).toDF(('dog', 'score'))
Was muss ich tun wird, wäre eine weitere Datenrahmen, dessen Schema erstellt werden
Person, Hund, score_person * score_dog
so im Grunde multipliziert die Spalte score
in beiden Datenrahmen und die beiden ersten Spalten zu halten. Diese Multiplikation muss für jedes mögliche Paar von Faktoren stattfinden, d. H. Jede Person mit jedem Hund, so dass mein Ergebnisdatenblock 15 Zeilen hätte.
Ich kann keinen Weg finden, dies zu erhalten, es scheint mir, dass es eine SELECT auf beiden Datenrahmen passieren muss, aber kein JOIN oder UNION kann helfen.
Sieht großartig, einen Grund, warum ich Dinge wie diese, obwohl erhalten: Row (person = u‘ u1 ', Hund = u'd2', Produkt = None) (die None)? Es gibt mehrere im Ergebnis und einige andere sind 0. Ist es ein Problem mit Typen? –
Es ist. 'type (0)' (der Teil, den ich korrigiert habe) ist 'int', während' type (0.5) '' float' ist. Spark 'DataFrame' kann nur einen einzigen Typ enthalten (der erste Wert wird zum Bestimmen des Schemas verwendet) und alle anderen Werte werden verworfen. Sie können überprüfen, ob es vor dem 'Join' passiert. – zero323