Ich mag einen Pyspark Datenrahmen mit einer SQL-ähnlichen IN
Klausel filtern, wie es inFiltern einen Pyspark Datenrahmen mit SQL-ähnlichen IN-Klausel
sc = SparkContext()
sqlc = SQLContext(sc)
df = sqlc.sql('SELECT * from my_df WHERE field1 IN a')
wo a
ist das Tupel (1, 2, 3)
. Ich erhalte diese Fehlermeldung:
java.lang.RuntimeException: [1.67] failure: ``('' expected but identifier a found
die im Grunde sagt, es erwartet etwas wie '(1, 2, 3)' statt a. Das Problem ist, ich kann nicht manuell die Werte in einem schreiben, wie es von einem anderen Job extrahiert wird.
Wie würde ich in diesem Fall filtern?
Für die zweite Methode, Sie das gleiche, indem Sie erreichen können df.where (df.v.isin ({"foo", "bar"})). count() –
Sie können, aber persönlich mag ich diesen Ansatz nicht. Mit 'col 'kann ich den SQL-Ausdruck und ein bestimmtes' DataFrame'-Objekt leicht entkoppeln. So können Sie beispielsweise ein Wörterbuch mit nützlichen Ausdrücken führen und sie einfach auswählen, wenn Sie es brauchen. Bei einem expliziten DF-Objekt müssen Sie es in eine Funktion einfügen und es ist nicht so gut. – zero323