2016-04-19 4 views
1

ich die Reihe von Funktionen leite.Werden pyspark tfidf-Transformation Indexpositionen beibehalten?

hashingTF = HashingTF() 
documents = sc.parallelize(df.content_list.values) 
tf = hashingTF.transform(documents) 
tf.cache() 
idf = IDF(minDocFreq=2).fit(tf) 
tfidf = idf.transform(tf) 

aber ich bin nicht sicher, ob diese in der gleichen Position bleiben sie in eingesetzt wurden

Gibt es eine Möglichkeit, diese wieder an ihren ursprünglichen Wert abzubilden oder index?

Antwort

0

Ich nehme an, Sie wollen zipdocuments mit dem Ergebnis der IDF.transform:

combined = documents.zip(tfidf) 

Da weder HashingTF.transform noch IDF.transform schlurft die Daten dies ist eine sichere Transformation und die entsprechenden Objekte in Tupeln kombiniert werden.

Im Allgemeinen, wenn Sie zwei RDDs mit einem gemeinsamen Vorfahren haben und keiner wurde gemischt (alle Transformationen wurden nur mit mapPartitions ausgedrückt) dann Beziehungen zwischen den Partitionen sollte erhalten bleiben. Wenn sich die Anzahl der Elemente nicht geändert hat (keine filters oder flatMaps), sollte die Reihenfolge der Werte und die Anzahl der Elemente pro Partition ebenfalls beibehalten werden. In diesem Fall verwenden Sie zip, um Daten erneut zu verbinden.

Andernfalls fügen Sie vor dem Teilen eindeutige Schlüssel hinzu und verwenden join, um Daten erneut zu verbinden.

+0

Danke, das gibt mir viel mehr Vertrauen in meine Operationen – user1340048