IDEA中创建maven工程进行本地运行spark

一、开始

1.背景

  • 使用idea开发工具进行WordCount程序,也就是在本地进行spark的计算,真的很快很快,比Hadoop要快很多。
  • 这个是在生产环境中测试spark,虽然在spark-shell上测试的比较多,但是这样的我们也得会呀,关键是idea不平凡呀,这么好的软件不好好利用,好了,走程序,我们在idea中编写好程序然后打成jar包,最后提交到集群hdfs上。

二、创建、插件、编写

1.创建

1.创建一个Maven项目。一图胜千言,来吧。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意:
学过java的肯定要选class,这里不正确,当然可以选,但是在运行的时候还得加上object这个。原因我忘了,可能是因为scala语言的原因,等我再查。

2.插件

1.创建好后就要使用spark的插件,因为要在本地运行可以不用网络的情况下运行,可定要它所依赖的本地包。
这里你可以去官网下载:spark官网网速应该都不快吧,耐心点。
下载完后放在一个地方,记住位置,上图操作:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:
jars包在spark里面只要这一个,但是也全要,别上传时没有选全,jars全要,上传。

3.代码

我就直接上图了,代码使用scala语言就要遵循他的格式各种。代码很强了,各种注释。

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object 练习_单词计数 {
  def main(args: Array[String]): Unit = {
    //1.创建SparkConf对象,设置appName和Master地址
    val sparkconf = new SparkConf().setAppName("WordCount").setMaster("local[2]")
    //设置idea的虚拟机内存,如果内存够用,此语句可以省略
    sparkconf.set("spark.testing.memory", "2147480000")
    //2.创建SparkContext对象,它是所有任务计算的源头,它会创建DAGScheduler和TaskScheduler
    val sc = new SparkContext(sparkconf)
    //设置日志级别
    //sparkContext.setLogLevel("WARN")
    //3.读取数据文件,RDD可以简单的理解为是一个集合,集合中存放的元素是String类型
    val data: RDD[String] = sc.textFile("D:\\Spark\\spark测试文件\\1.txt")
    //4.切分每一行,获取所有的单词
    val words: RDD[String] = data.flatMap(_.split(" "))
    //5.每个单词记为1,转换为(单词,1)
    val wordAndOne: RDD[(String, Int)] = words.map(x => (x, 1))
    //6.相同单词汇总,前一个下划线表示累加数据,后一个下划线表示新数据
    val result: RDD[(String, Int)] = wordAndOne.reduceByKey(_ + _)
    //7.收集打印结果数据
    val finalResult: Array[(String, Int)] = result.collect()
    println(finalResult.toBuffer)
    //8.关闭sparkContext对象
    sc.stop()
  }
}

三、上传、结果

这个没啥好说的了,基本上到这就算完成了。使用强大的idea运行,查看下结果,结果跟你编写的那个是一样的,只是编译的代码使用RDD进行了RDD的转换算子跟RDD的行动算子。
这是我做的,spark运算很快。
在这里插入图片描述
欧克欧克!!!

猜你喜欢

转载自blog.csdn.net/qq_44761359/article/details/106736093