Exception in thread "main" java.lang.NoSuchMethodError: scala.util.matching.Regex.<init>(Ljava/lang/String;Lscala/collection/Seq;)V
at scala.collection.immutable.StringLike.r(StringLike.scala:284)
at scala.collection.immutable.StringLike.r$(StringLike.scala:284)
at scala.collection.immutable.StringOps.r(StringOps.scala:33)
at scala.collection.immutable.StringLike.r(StringLike.scala:273)
at scala.collection.immutable.StringLike.r$(StringLike.scala:273)
at scala.collection.immutable.StringOps.r(StringOps.scala:33)
at org.apache.spark.util.Utils$.<init>(Utils.scala:109)
at org.apache.spark.util.Utils$.<clinit>(Utils.scala)
at org.apache.spark.SparkConf.loadFromSystemProperties(SparkConf.scala:75)
at org.apache.spark.SparkConf.<init>(SparkConf.scala:70)
at org.apache.spark.SparkConf.<init>(SparkConf.scala:59)
at cn.edu.nbpt.wordcount$.main(wordcount.scala:8)
at cn.edu.nbpt.wordcount.main(wordcount.scala)
Process finished with exit code 1
从报错信息来看,Spark和Scala版本不兼容引起的。建议检查下Spark和Scala版本是否匹配。
package cn.itcast.sparkhello import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object WordCount { def main(args: Array[String]): Unit = { //1.创建SparkContext val config = new SparkConf().setAppName("wc").setMaster("local[*]") val sc = new SparkContext(config) sc.setLogLevel("WARN") //2.读取文件 //A Resilient Distributed Dataset (RDD)弹性分布式数据集 //可以简单理解为分布式的集合,但是spark对它做了很多的封装, //让程序员使用起来就像操作本地集合一样简单,这样大家就很happy了 val fileRDD: RDD[String] = sc.textFile("D:\\授课\\190429\\资料\\data\\words.txt") //3.处理数据 //3.1对每一行按空切分并压平形成一个新的集合中装的一个个的单词 //flatMap是对集合中的每一个元素进行操作,再进行压平 val wordRDD: RDD[String] = fileRDD.flatMap(_.split(" ")) //3.2每个单词记为1 val wordAndOneRDD: RDD[(String, Int)] = wordRDD.map((_,1)) //3.3根据key进行聚合,统计每个单词的数量 //wordAndOneRDD.reduceByKey((a,b)=>a+b) //第一个_:之前累加的结果 //第二个_:当前进来的数据 val wordAndCount: RDD[(String, Int)] = wordAndOneRDD.reduceByKey(_+_) //4.收集结果 val result: Array[(String, Int)] = wordAndCount.collect() result.foreach(println) } } |