我正在使用apache spark的mlib版本1.4.0对一个文本文档执行潜在的dirichelet分析,其中每一行都代表一条tweet。
以project中的例子为例,我发现我首先需要生成术语/文档频率列表之类的内容。
我的第一个问题是,假设在项目的示例中,file每行代表一个术语/单词,每列代表一个文档,单元格对计数进行编号,这样的假设是否正确。
我的第二个问题是如何生成这样的文本文件或直接生成JavaRDD对象?我可以使用以下命令获取文件中所有tweet的字数:
JavaRDD<String> data = sc.textFile(path);
JavaRDD<String> words = data.flatMap(new FlatMapFunction<String, String> () { public Iterable<String> call(String s) { return Arrays.asList(s.split("")); }});
JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {
public Tuple2<String, Integer> call(String s) { return new Tuple2<String, Integer>(s, 1); } });
JavaPairRDD<String, Integer> counts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {
public Integer call(Integer a, Integer b) { return a + b; }感谢您的任何提示或评论!
发布于 2015-07-01 04:40:15
如果您的文档是按文件分隔的,那么构建文档-单词频率列表的一个简单选择是结合使用flatMapValues和wholeTextFiles api。
或者,如果您的文档是以行为单位的,那么您可以完成示例代码所做的大部分工作。
https://stackoverflow.com/questions/31146747
复制相似问题