-
idea配置spark单机环境请参考其他教程,这里我使用的版本信息如下
- JDK:1.8.0_281
- Scala:2.12.8
- Spark:3.1.1
- 开发环境:IDEA 2020.2.3
-
idea中新建maven项目,建议jdk版本1.8及以上,单击下一步
-
自定义项目名称,这里为experiment1,下拉选项中groupid和version也可自定义,这里分别改为com.experiment和1.0.0,单击完成
-
右键单击项目experiment目录选择Add Framework Support…,勾选上scala后ok。
-
打开项目experiment1下的pom.xml文件,</project>
标签前追加下列代码,这里的spark-core_2.12
和3.0.0
是基于上述环境版本而言,如环境版本与上述不一致,可能配置失败,可根据自己的版本进行调整。(如下载速度较慢,可参考相关教程更改maven源)
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
追加代码后记得单击右上角按钮更新依赖,或使用快捷键ctrl
+shift
+O
,下载完成后关闭该文件。
-
experiment项目目录下新建目录用于存放数据文件,这里目录名为file,文件名words,txt,与代码中保持一致,修改记得一并修改。
-
experiment->src->main->java目录下右键单击新建package,这里命名为spark
spark包下再新建package这里命名为task1
task1上右键单击新建Scala Class
选择object,这里命名为WordCount
-
复制下列代码到WordCount文件中覆盖内容,如包名或文件路径不一致可自行修改
package spark.task1
import org.apache.spark.{SparkConf, SparkContext}
object WordCount {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("task1")
val sc = new SparkContext(sparkConf)
val info = sc.textFile("file/words.txt", 8)
val rst = info.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2, ascending = false)
rst.foreach(println)
sc.stop()
}
}
编辑区域任意位置单击右键,选择run "WordCount"运行代码,得到结果
-
发现输出结果中存在大量日志信息,影响结果展示,experiment->src->main->resources目录下新建文件,命名为log4j.properties
覆盖复制下列信息,保存,关闭
log4j.rootCategory=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd/HH:mm:ss} %p %c{1}: %m%n
log4j.logger.org.apache.spark.repl.Main=ERROR
log4j.logger.org.spark_project.jetty=ERROR
log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=ERROR
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=ERROR
log4j.logger.org.apache.parquet=ERROR
log4j.logger.parquet=ERROR
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR
-
重新运行WordCount,得到纯输出结果。