0

我正在尝试在独立集群上运行 spark 应用程序。在这个应用程序中,我使用 tf-idf 向量训练朴素贝叶斯分类器。

我以与这篇文章类似的方式编写了应用程序(LogisticRegression 的 Spark MLLib TFIDF 实现)。主要区别在于,我对每个文档进行标记化和规范化:

JavaRDD<Document> termDocsRdd = sc.wholeTextFiles("D:/fileFolder").flatMap(new FlatMapFunction<Tuple2<String,String>, Document>() {
        @Override
        public Iterable<Document> call(Tuple2<String,String> tup) 
        { 
            return Arrays.asList(parsingFunction(tup)); 
        } 
    });

parsingFunction 没有任何 Spark 函数,如 map 或 flatMap 等。因此它不包含任何数据分布函数。

我的集群是 - 一台主机和另外两台机器 - 节点。所有机器都有 8 核 CPU 和 16 GB RAM。我正在尝试在 20 个文本文件(每个 ~ 100 KB - 1.5 MB)上训练分类器。我不使用分布式文件系统并将文件直接放入节点。

问题是我的集群没有我想象的那么快 - 分类器训练了大约 5 分钟......在本地模式下,这个操作花费的时间要少得多。

我应该注意什么?

我会很感激任何建议。

谢谢你!

4

1 回答 1

1

您是否缓存了训练数据的 RDD ?除非缓存 RDD,否则像训练贝叶斯分类器这样的迭代算法将表现不佳。

于 2014-12-11T17:03:41.013 回答