pyspark tfidf转型是否维持指数位置?

时间:2016-04-19 17:13:42

标签: python hadoop apache-spark pyspark

我正在运行一系列功能:

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)

但是我不确定它们是否保持插入的位置相同。

有没有办法将这些映射回原始值或索引?

1 个答案:

答案 0 :(得分:0)

我假设您要zip documents,结果为IDF.transform

combined = documents.zip(tfidf)

由于HashingTF.transformIDF.transform都没有对数据进行混洗,因此这是一个安全的转换,相应的对象将组合成元组。

一般情况下,如果您有两个具有共同祖先的RDD,并且没有一个已经洗牌(所有转换仅使用mapPartitions表示),则应保留分区之间的关系。此外,如果元素的数量没有改变(没有filtersflatMaps),那么也应该保留值的顺序和每个分区的元素数量。如果是这样,您可以使用zip重新连接数据。

否则,您在拆分前添加唯一键,并使用join再次连接数据。