【问题标题】:Spark - word count using javaSpark - 使用java进行字数统计
【发布时间】:2017-09-18 15:04:16
【问题描述】:

我是 Spark 的新手,我想使用 Dataset 类从文本文件中提取特征(基本上是字数)。我已经阅读了关于 Spark 的 "Extracting, transforming and selecting features" 教程,但报告的每个示例都从定义为“即时”的一组单词开始。我曾多次尝试从文本文件开始生成相同类型的数据集,但我总是失败。这是我的代码:

SparkSession spark = SparkSession
              .builder()
              .appName("Simple application")
              .config("spark.master", "local")
              .getOrCreate();

Dataset<String> textFile = spark.read()
            .textFile("myFile.txt")
            .as(Encoders.STRING());

Dataset<Row> words = textFile.flatMap(s -> {
    return  Arrays.asList(s.toLowerCase().split("AG")).iterator();
    }, Encoders.STRING()).filter(s -> !s.isEmpty()).toDF();

Word2Vec word2Vec = new Word2Vec()
      .setInputCol("value")
      .setOutputCol("result")
      .setVectorSize(16)
      .setMinCount(0);

Word2VecModel model = word2Vec.fit(words);
Dataset<Row> result = model.transform(words);

我收到此错误消息:Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: Column value must be of type equal to one of the following types: [ArrayType(StringType,true), ArrayType(StringType,false)] but was actually of type StringType.

我想我必须使用类似的东西将每一行转换为一行:

RowFactory.create(0.0, line)

但我不知道该怎么做。

基本上,我试图根据从长字符序列生成的字符串的字数来训练分类系统。我的文本文件每行包含一个序列,因此我需要对每一行进行拆分和计数(子字符串称为 k-mers,可以在 here 找到一般描述)。根据 k-mers 的长度,我可能有超过 4^32 个不同的字符串,所以我一直在寻找像 Spark 这样的可扩展机器学习算法。

【问题讨论】:

  • 能否请您添加文本文件的完整堆栈和内容。

标签: java apache-spark word-count


【解决方案1】:

如果你只想计算单词的出现次数,你可以这样做:

Dataset<String> words = textFile.flatMap(s -> {
return  Arrays.asList(s.toLowerCase().split("AG")).iterator();
}, Encoders.STRING()).filter(s -> !s.isEmpty());

Dataset<Row> counts = words.toDF("word").groupBy(col("word")).count();

Word2Vec 是更强大的 ML 算法,在您的情况下没有必要使用它。记得在文件开头加上import static org.apache.spark.sql.functions.*;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多