1.中文分词
中文分词选用的是Ansj框架。分词部分使用Java语言封装,由Spark中的flatMap算子调用。分词后根据词性做了筛选。
package com.ahn.spark;import org.ansj.domain.Result;import org.ansj.domain.Term;import org.ansj.splitWord.analysis.ToAnalysis;import java.util.*;public class AnsjTest { public static List
2.词频统计
词频统计使用Scala进行编写,具体步骤与WorldCount相同。
package com.ahn.sparkimport org.apache.spark.{SparkConf, SparkContext}import com.ahn.spark.AnsjTest.{fenci}object Test { def main(args: Array[String]): Unit = { //初始化SparkConf val conf: SparkConf = new SparkConf() //设置使用本地运行的方式 还可以选择Spark自身集群的方式 以及on Yarn的方式 conf.setMaster("local") //设置应用名称 conf.setAppName("SparkTest") //初始化SparkContext val context = new SparkContext(conf) //设置日志打印级别 context.setLogLevel("ERROR") //读取数据文件 val value = context.textFile("src/main/resources/test.txt") //flatMap算子中使用fenci()方法 val words = value.flatMap(v => fenci(v).toArray()) //Map算子将数据处理为(key 1)的形式 val pairs = words.map(word => (word, 1)) //reduceByKey根据key进行合并 将value的值进行相加。 val wordcounts = pairs.reduceByKey(_ + _) //根据value值进行降序排序 并取出前10条记录打印 wordcounts.sortBy(x=>x._2,false).take(10).foreach(println) }}
3.pom文件
<?xml version="1.0" encoding="UTF-8"?>
4.项目目录
5.结果