如何在Spark中拆分序列文件

时间:2015-07-30 21:38:10

标签: scala apache-spark

我是Spark的新手并尝试读取序列文件并将其用于分类问题。以下是我阅读序列文件的方法

  val tfidf = sc.sequenceFile("/user/hadoop/strainingtesting/tfidf-vectors", classOf[Text], classOf[VectorWritable])

我不知道如何按标签拆分序列文件的每一行?即如何获取Text值?

如何在Mllib中将它用于NAiveBayes分类器?

1 个答案:

答案 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并执行必要的转换。