Explode in PySpark

Ich möchte aus einem DataFrame, der Wortlisten enthält, einen DataFrame mit jedem Wort in einer eigenen Zeile erstellen.

Wie kann ich eine Spalte in einem DataFrame auflösen?

Hier ist ein Beispiel für einige meiner Versuche, bei denen Sie die einzelnen Codezeilen auskommentieren und den im folgenden Kommentar aufgeführten Fehler erhalten können. Ich verwende PySpark in Python 2.7 mit Spark 1.6.1.

from pyspark.sql.functions import split, explode
DF = sqlContext.createDataFrame([('cat \n\n elephant rat \n rat cat', )], ['word'])
print 'Dataset:'
DF.show()
print '\n\n Trying to do explode: \n'
DFsplit_explode = (
 DF
 .select(split(DF['word'], ' '))
#  .select(explode(DF['word']))  # AnalysisException: u"cannot resolve 'explode(word)' due to data type mismatch: input to function explode should be array or map type, not StringType;"
#   .map(explode)  # AttributeError: 'PipelinedRDD' object has no attribute 'show'
#   .explode()  # AttributeError: 'DataFrame' object has no attribute 'explode'
).show()

# Trying without split
print '\n\n Only explode: \n'

DFsplit_explode = (
 DF 
 .select(explode(DF['word']))  # AnalysisException: u"cannot resolve 'explode(word)' due to data type mismatch: input to function explode should be array or map type, not StringType;"
).show()

Bitte Ratschläge

Antworten auf die Frage(4)

Ihre Antwort auf die Frage