当遇到这种有标点符号或者有空行的情况,想要统计单词个数,该怎么办呢?
第一步
利用rdd读取数据
val conf = new SparkConf().setAppName("sc").setMaster("local[2]")
val sc = new SparkContext(conf)
val rdd = sc.textFile("data\\wordCount.txt")
输出结果为:
第二步
我们将其结果对特殊字符进行删除操作
首先我们定义一个函数
def removePunctuation=(text:String)=>{
//定义一个字符串,作为正则判断
//这个非常重要
//"[.,!?;:()\\[\\]{}\"]"表示正则中括号里面的字符任意一个
val punctuation: String = "[.,!?;:()\\[\\]{}\"]"
text.replaceAll(punctuation,"")
}
//通过map来去除每一行的标点符号
//map参数里面可以是函数
val cleanedRdd: RDD[String] = rdd.map(removePunctuation)
cleanedRdd.flatMap(_.split("\\s+")).foreach(println(_))