windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤
目标:
在idea中用scala编写简单代码,从本地hdfs中(或本地目录)读取文件,通过spark处理后,结果输出到本地dhfs或本地目录。
然后修改代码,将项目打成jar包,上传到linux中,在spark集群上运行。
环境:hadoop2.7.2 +spark2.2.3 +scala 2.11.8 +idea2018
以上环境的具体安装配置和idea的基本操作分别见:
windows上 IntelliJ IDEA安装scala环境 : https://blog.****.net/****_dengfan/article/details/88363224
windows 安装 配置 hadoop2.7.2 spark2.2.3 :https://blog.****.net/****_dengfan/article/details/88375313
1.编写代码
目录结构:
Ts的代码:
val conf = new SparkConf().setAppName("Ts").setMaster("local[1]")
//创建spark执行的入口
val sc = new SparkContext(conf)
//指定以后从哪里读取数据创建RDD
//val lines: RDD[String] = sc.textFile("D:/test.txt") 从本地目录读取文件
//我们从本地hdfs读取文件
val lines: RDD[String] = sc.textFile("hdfs://localhost:9000/user/spark")
val lines: RDD[String] = sc.textFile(args(0))
val words: RDD[String]=lines.flatMap(_.split(" "))
val word: RDD[(String,Int)]=words.map((_,1))
//word.saveAsTextFile("C:/sparkdata/out") 将结果保存到本地目录
//将结果保存到本地hdfs
word.saveAsTextFile("hdfs://localhost:9000/user/output")
//释放资源
sc.stop()
2.运行hadoop集群
上传文件,windows上查看结果:
具体如何上传文件,参考 https://blog.****.net/****_dengfan/article/details/88375313
3.执行程序,查看结果
成功。
4.将项目打包成jar,上传到linux中执行。
1.修改项目代码:将本地hdfs路径去掉
//spark主机改为linux上的主机
val conf = new SparkConf().setAppName("Ts").setMaster("spark://node2:7077")
val sc = new SparkContext(conf)
//指定以后从哪里读取数据创建RDD,从args(0)指定位置读取数据
val lines: RDD[String] = sc.textFile(args(0))
val words: RDD[String]=lines.flatMap(_.split(" "))
val word: RDD[(String,Int)]=words.map((_,1))
//将结果保存到args(1)参数指定位置
word.saveAsTextFile(args(1))
//释放资源
sc.stop()
2.打包
Idea界面,点击 File->Project Structre,得到下图界面
上图一次点击完后:
点击ok
点击ok,然后退到主界面。
点击上图标记的选项。
点击上图build选项开始打包。
去D:\IdeaProjects\Li\out\artifacts\Li_jar/下找我们的项目jar包。
或者在idea界面也可以看到左边项目中生成了一个红色的out文件夹
在上图的箭头指向的目录中也能找到我们的jar包,我们的项目是Li,所以生成的jar包为Li.jar
得到要执行的类的全类名: 在类的类名上右键 点击 copy Reference选项 得到全类名,我这里得到的全类名是
com.df.test.Ts
然后将Li.jar拷贝到linux中你自己的文件夹下 我这里拷贝到 /opt/sofrware/下
3.运行jar包
开启hdfs集群 : sbin/start-dfs.sh 这里的sbin文件夹是hadoop的sbin文件夹
开启spark集群 : sbin/start-all.sh 这里的sbin文件夹是spark的sbin文件夹
jps查看启动情况:
在spark集群上运行我们的Li.jar
在浏览器上查看结果:
成功。