Angenommen, ich versuche, diesen regulären Ausdruck "RT \ s * @ USER \ w \ w {8}: \ s *" zu entfernen, und ich möchte diese Form des regulären Ausdrucks in meiner RDD entfernen.Wie entfernt man bestimmte reguläre Ausdrücke in PySpark mit RDD?
Mein aktueller RDD ist:
text = sc.textFile(...)
delimited = text.map(lambda x: x.split("\t"))
und hier ist der Teil, wo ich regulären Ausdruck zu entfernen bin versucht. Ich versuchte RDD-Transformation zu tun, um alle Strings loszuwerden, die mit diesem regulären Ausdruck übereinstimmen, aber es gab mir einen Fehler.
abc = delimited.map(lambda x: re.sub(r"RT\s*@USER\w\w{8}:\s*", " ", x))
TypeError: expected string or buffer
und
abc = re.sub(r"RT\s*@USER\w\w{8}:\s*", " ", delimited)
TypeError: expected string or buffer
und
abc = delimited.map(lambda x: re.sub(r"RT\s*@USER\w\w{8}:\s*", " ", text))
Exception: It appears that you are attempting to broadcast an RDD or reference an RDD from an action or transformation. RDD transformations and actions can only be invoked by the driver, not inside of other transformations; for example, rdd1.map(lambda x: rdd2.values.count() * x) is invalid because the values transformation and count action cannot be performed inside of the rdd1.map transformation. For more information, see SPARK-5063.
Ich möchte diesen regulären Ausdruck entfernen, so dass ich auf die nächsten RDD Transformationen fortgesetzt werden kann. Wie mache ich diesen Code in PySpark?
vielen Dank ... – kys92