【问题标题】:The method run(JavaRDD<Sequence>) is not applicable for the arguments (JavaRDD<List<String>>)方法 run(JavaRDD<Sequence>) 不适用于参数 (JavaRDD<List<String>>)
【发布时间】:2016-11-29 14:57:35
【问题描述】:

尝试在 spark mllib 中执行 Prefixspan 算法时出现错误

PrefixSpan 类型中的方法 run(JavaRDD Sequence ) 不适用于参数(JavaRDD List String)

我在网站上看到的代码是

JavaRDD<List<List<Integer>>> sequences = sc.parallelize(Arrays.asList(
Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3)),
Arrays.asList(Arrays.asList(1), Arrays.asList(3, 2), Arrays.asList(1, 2)),
Arrays.asList(Arrays.asList(1, 2), Arrays.asList(5)),
Arrays.asList(Arrays.asList(6))), 2);
PrefixSpan prefixSpan = new PrefixSpan().setMinSupport(0.5).setMaxPatternLength(5);
PrefixSpanModel<Integer> model = prefixSpan.run(sequences);
for (PrefixSpan.FreqSequence<Integer> freqSeq: model.freqSequences().toJavaRDD().collect()) {
     System.out.println(freqSeq.javaSequence() + ", " + freqSeq.freq());
}

我的代码是

List<List<String>> sequences = createLists(featuresForAlgo);

JavaRDD<List<String>> rdd =  sc.parallelize(sequences);

PrefixSpan prefixSpan = new PrefixSpan()
          .setMinSupport(0.5)
          .setMaxPatternLength(5);
        PrefixSpanModel<String> model = prefixSpan.run(rdd);
        for (PrefixSpan.FreqSequence<Integer> freqSeq: model.freqSequences().toJavaRDD().collect()) {
          System.out.println(freqSeq.javaSequence() + ", " + freqSeq.freq());
        }

方法 prefixSpan.run(rdd) 给出错误的地方。 知道为什么我会收到此错误吗? 据我所知 List 是一个序列。

谢谢

【问题讨论】:

    标签: java apache-spark spark-streaming


    【解决方案1】:

    这个错误有点误导,但是如果你查看 PrefixSpan 类的源代码你会发现 run 方法的参数是这样的

    @param data 有序序列的项集存储为 Java Iterable of Iterables

    所以 prefixSpan.run 方法需要JavaRDD&lt;List&lt;List&lt;String&gt;&gt;&gt;。在您的代码中,您可以这样做

    List<List<List<String>>> seqNew = new ArrayList<List<List<String>>>();
    seqNew.add(sequences);
    JavaRDD<List<List<String>>> rdd =  sc.parallelize(seqNew);
    

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 2016-07-24
      相关资源
      最近更新 更多