Python pyspark tfidf转换是否保持索引位置?

Python pyspark tfidf转换是否保持索引位置?,python,hadoop,apache-spark,pyspark,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) 但是,我不确定它们是否仍处于插入的相同位置 有没有办法将这些文件映射回它们的原始值或索引?我假设您希望压缩文档,并

我正在运行一系列函数:

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)
但是,我不确定它们是否仍处于插入的相同位置


有没有办法将这些文件映射回它们的原始值或索引?

我假设您希望
压缩
文档
,并使用
IDF.transform

combined = documents.zip(tfidf)
由于
HashingTF.transform
IDF.transform
都不会洗牌数据,因此这是一种安全的转换,相应的对象将组合成元组

在一般情况下,如果您有两个具有共同祖先的RDD,并且其中任何一个都没有被洗牌(所有转换都只使用
mapPartitions
)表示),那么分区之间的关系应该被保留。此外,如果元素的数量没有改变(没有
过滤器
平面图
),那么每个分区的值顺序和元素数量也应该保持不变。在这种情况下,您可以使用
zip
重新连接数据


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

我假设您希望
压缩
文档
,并使用
IDF.transform

combined = documents.zip(tfidf)
由于
HashingTF.transform
IDF.transform
都不会洗牌数据,因此这是一种安全的转换,相应的对象将组合成元组

在一般情况下,如果您有两个具有共同祖先的RDD,并且其中任何一个都没有被洗牌(所有转换都只使用
mapPartitions
)表示),那么分区之间的关系应该被保留。此外,如果元素的数量没有改变(没有
过滤器
平面图
),那么每个分区的值顺序和元素数量也应该保持不变。在这种情况下,您可以使用
zip
重新连接数据


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

谢谢,这让我对操作更有信心谢谢,这让我对操作更有信心