我正在尝试在独立集群上运行 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 分钟......在本地模式下,这个操作花费的时间要少得多。
我应该注意什么?
我会很感激任何建议。
谢谢你!