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.编写代码

目录结构:

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

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 idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

上传文件,windows上查看结果:

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

具体如何上传文件,参考 https://blog.****.net/****_dengfan/article/details/88375313

 

3.执行程序,查看结果

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

成功。

 

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,得到下图界面

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

上图一次点击完后:

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

点击ok

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

点击ok,然后退到主界面。

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

点击上图标记的选项。

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

点击上图build选项开始打包。

去D:\IdeaProjects\Li\out\artifacts\Li_jar/下找我们的项目jar包。

或者在idea界面也可以看到左边项目中生成了一个红色的out文件夹

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

在上图的箭头指向的目录中也能找到我们的jar包,我们的项目是Li,所以生成的jar包为Li.jar

windows idea中用scala操作本地spark,hadoop,及打包成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查看启动情况:

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

在spark集群上运行我们的Li.jar

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

在浏览器上查看结果:

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

windows idea中用scala操作本地spark,hadoop,及打包成jar 详细步骤

成功。