【问题标题】:How to split a sequence file in Spark如何在 Spark 中拆分序列文件
【发布时间】:2015-07-31 08:29:43
【问题描述】:

我是 Spark 的新手,我尝试读取序列文件并将其用于分类问题。这是我读取序列文件的方式

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

不知道如何按制表符分割序列文件的每一行?即如何获取 Text 值?

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

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    sc.sequenceFile 返回键/值元组(Scala 中的 Tuple2 对象)的 RDD。因此,如果您只想要一个 RDD 文本,您可以执行 map 来获取文件每一行中的键。

    val text = tfidf.map(_._1)
    

    朴素贝叶斯期望一个带有标签向量的 RDD 作为输入。而且由于没有简单的方法可以转换您的 VectorWritable 对象,也许您可​​以使用 mahout 的矢量转储实用程序将您的序列文件实际转换为文本文件。然后读入 spark。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2015-03-29
      • 2017-09-08
      • 2020-03-07
      • 2019-08-26
      • 2015-12-18
      相关资源
      最近更新 更多