我正在运行一系列功能:
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)
但是我不确定它们是否保持插入的位置相同。
有没有办法将这些映射回原始值或索引?
答案 0 :(得分:0)
我假设您要zip
documents
,结果为IDF.transform
:
combined = documents.zip(tfidf)
由于HashingTF.transform
和IDF.transform
都没有对数据进行混洗,因此这是一个安全的转换,相应的对象将组合成元组。
一般情况下,如果您有两个具有共同祖先的RDD,并且没有一个已经洗牌(所有转换仅使用mapPartitions
表示),则应保留分区之间的关系。此外,如果元素的数量没有改变(没有filters
或flatMaps
),那么也应该保留值的顺序和每个分区的元素数量。如果是这样,您可以使用zip
重新连接数据。
否则,您在拆分前添加唯一键,并使用join
再次连接数据。