Meine RDD hat TAB-Zeichenfolgen darin enthalten. Ich versuche, es zu filtern: wenn Spalte 5 paar Strings enthält:Filterung in pyspark
filt_data = raw_data.filter(lambda x: '' if len(x.split('\t')) < 5 else "apple" in x.split('\t')[4] or "pear" in x.split('\t')[4] or "berry" in x.split('\t')[4] or "cherry" in x.split('\t')[4])
Ich denke, seine sehr effektive Lösung nicht, da ich es tue 4 Splits der gleichen Reihe. Kann some1 einen optimalen Weg zeigen?
Und was ist, wenn ich eine Reihe von "Früchten" habe. Wie kann ich meine RDD filtern, die Elemente von diesem Array enthält? Könnte so etwas tun x.split('\t')[4] in array
aber es wird nur filtern, wenn ein Array-Element gleich ist Spalte 5 Element, aber ich muss überprüfen, ob Spalte 5 eine der Strings in Array enthält.
Danke! Es hat den Prozess beschleunigt. Irgendeine Idee über die zweite Frage, wie man nach Array-Inhalten filtert? – lacerated
Wenn ich deine Frage beantwortet habe, akzeptiere sie bitte. in Bezug auf Ihre zweite Frage, denke ich, dass es eine gute Idee ist, und sollte funktionieren. Ich habe meine Antwort aktualisiert, um diesen Teil auch wiederzugeben. Bitte überprüfen Sie, ob es für Sie funktioniert. – Yaron