前言
本篇文章结合上一篇文章的spark-shell编程的基础,进行了如下工作
- 将scala的shell中的命令整合成一个完整的.scala格式的文件
- 使用IDEA将程序打包上传后执行
- 配置IDEA连接hadoop和spark,直接在本地上运行.scala文件
安装IDEA
一、本机下载安装scala
1. 下载安装
这一步可以跳过,因为在后面可以直接在IDEA中安装scala,但是由于在线安装时间太长,这里不推荐大家在线安装,给出链接,https://www.scala-lang.org/download/,推荐大家直接下载zip,解压即用
然后有个小技巧就是可以先复制下载链接,然后可以自己修改里面的版本号来找到适合自己的版本号
2. 环境变量配置
解压完之后,将scala的bin路径放到path里面
3. 测试
打开cmd,输入scala -version,会有相应的版本号出现
二、安装IDEA
这里给出官网链接https://www.jetbrains.com/idea/download/#section=windows
下载后安装即可
这里注意把环境变量选上
在这里直接安装scala插件
三、创建scala工程
- 选择Maven
注意这里可以选择java版本
- 填写信息
- 选择任务存储路径
- 选择Enable Auto-Import
- 新建scala文件夹,并设置为源目录
右键scala
- 添加scala支持
具体的版本看自己的选择 - 新建scala文件
- 运行第一个scala程序
object Hello_World { def main(args: Array[String]) { println("Hello World!") } }
- 运行结果
打包scala程序
-
配置pom.xml
下面给出一些常见的Maven依赖这里给出说明,下面依赖中的spark,scala,hadoop的版本号具体的限制没有那么严格,不一定要标准的使用自己的版本号,在第一次将依赖写入的时候,会下载比较长的时间,当代码里面没有语句标红之后证明依赖全部导入。
可能有些人在写入自己的版本号之后,会发现有些语句会一直标红,这证明没有你输入版本号组合的相应的依赖包,这个时候需要适当调整版本号,下面给出的版本号的组合是可以使用的,如果改成你自己的版本号无法使用,可以尝试下面给出的版本号组合
<groupId>com.ssh.spark</groupId>
<artifactId>spark-test</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<spark.version>2.3.4</spark.version>
<scala.version>2.11</scala.version>
<hadoop.version>2.8.5</hadoop.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-jobclient</artifactId>
<version>${hadoop.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
- 开始打包
先进这个
然后
选择主类
这里加载的包可以全部去掉,因为我们后面是提交到spark上面运行
这个需要保留
- build
- 产生对应jar包
- 提交运行
将jar包放到spark中,即可运行
spark-submit --class Hello_World --master local idea_scala.jar
对应结果
Hello World!
2019-11-08 21:41:28 INFO ShutdownHookManager:54 - Shutdown hook called
2019-11-08 21:41:28 INFO ShutdownHookManager:54 - Deleting directory /tmp/spark-f134102e-5389-4e09-bc6d-191e1e49e713
配置本地连接Hadoop
- 本机上安装hadoop
直接将自己安装的hadoop集群复制到本机上即可,最好不要用新下载的hadoop,因为你的hadoop文件里面会有很多的已经配置过的配置文件 - 配置环境变量
- 添加资源文件
将hadoop文件夹下配置过的core-site.xml和hdfs-site.xml放到资源文件夹内
- 别的教程里面可能会说需要替换hadoop.dll或者要换winutils.exe,但是这里由于我们没有替换也能正常执行,所以没有进行替换,如果此时执行还出现问题可以将上述的两个文件替换一下,遇到问题可以参考下面的文章https://www.cnblogs.com/xingluo/p/9512961.html