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
再次连接数据。谢谢,这让我对操作更有信心谢谢,这让我对操作更有信心