我试图使用Apache Spark进行简单的情感分类。我开始使用包含行号,目标(分数)和评论文字的文本文件:Spark执行RDD.zip()和RDD.join()缓慢
lineNumber [;] 0 [;]这是一篇综述。
我两个RDDS分裂像这样
scores = lines.map(lambda line: (line.split("[;]")[0], line.split("[;]")[1]))
reviews = lines.map(lambda line: (line.split("[;]")[0], line.split("[;]")[2]))
我真的就审查RDD执行某些操作(如文字分裂,移除停止字等),然后尝试建立TFIDF :
hash = HashingTF().transform(reviews.values())
idf = IDF().fit(hash)
tfidf = idf.transform(hash)
f = reviews.keys().zip(tfidf)
之后,我想加入包含TFIDF与评分的评论和分类。
reviewsAndScores = scores.join(f).values()
然而,两者的上述操作(TFIDF +邮编,加入)把我的机器上相当长的时间,我开始与6G司机和6G内存执行人。在一个相对较小的文件(330MB)上,两个taks都需要1个小时。 对于连接,spark ui告诉我它获得了427MB的输入,并且需要洗牌写入178.4MB。但是,我不确定这意味着什么。
你有什么提示,为什么这些操作如此缓慢?