我是Spark的新手并尝试读取序列文件并将其用于分类问题。以下是我阅读序列文件的方法
val tfidf = sc.sequenceFile("/user/hadoop/strainingtesting/tfidf-vectors", classOf[Text], classOf[VectorWritable])
我不知道如何按标签拆分序列文件的每一行?即如何获取Text值?
如何在Mllib中将它用于NAiveBayes分类器?
答案 0 :(得分:0)
sc.sequenceFile
返回键/值元组的RDD(Scala中的Tuple2对象)。因此,如果您只想要一个RDD的文本,您可以map
来获取文件每行中的键。
val text = tfidf.map(_._1)
Naive Bayes期望标记向量的RDD作为输入。由于没有简单的方法来转换VectorWritable
对象,也许您可以使用mahout的矢量转储实用程序将您的序列文件实际转换为文本文件。然后阅读火花。
mahout vectordump \
-i /user/hadoop/strainingtesting/tfidf-vectors \
-d /user/hadoop/strainingtesting/dictionary.file-\* \
-dt sequencefile -c csv -p true \
-o /user/hadoop/strainingtesting/tf-vectors.txt
现在使用sc.textFile
将文本文件读入Spark并执行必要的转换。