Ich versuche derzeit, df1 mit DF2 beizutreten, wo jedes Datenfeld eine Spalte namens Abstand hat und in Metern gemessen wird. Ich will kommen, wo der Unterschied zwischen diesen beiden dataframes.distance < = 10 MeterWie arithmetische Operationen auf joinExpression in Apache Funke
So etwas wie dieses def1.join(df2, df1("distance") - df2("distance") <= 10).show()
Ich habe versucht die API-Dokumentation nachzuschlagen, aber ich habe nicht genug Beispiele.
Wie würde ich einen Rückgabetyp für diese Funktion definieren? Ich versuche so etwas 'def distanceUdf (longA: Doppel, latA: Double, longAdrop: Doppel, latAdrop: Doppel, longB: Doppel, latB: Doppel, longBDrop: Doppel, latBDrop: Doppel): Int = { // berechnen b.pickup, a.dropoff Abstand Abstand val = calDistance (Longa, lata, longBDrop, latBDrop) if (Abstand <50) { return 0 } // berechnen b.dropoff, a.pickup Entfernung val distancePick = calDistance (longAdrop, latAdrop, longB, LATB) if (distancePick <20) { } return 0 return 1 } ' – Assem
Ihr aktueller Rückgabetyp ist in Ihrem' distanceUdf' gut. Ich bemerkte einen Tippfehler in meiner Lösung (es sollte 'val distanceUdf' sein, nicht' def distanceUdf') - du kannst 'distanceUdf (col (" longA "), col (" latA "), col (" longAdrop ") machen, col ("latAdrop"), col ("langB"), col ("latB"), col ("langBDrop"), col ("latBDrop")) == 1' - und wenn dies wahr ist, sind die Zeilen beigetreten. – ayplam