文章目录
Spark 准备环节
一、spark 下载配置
spark下载地址:https://www.apache.org/dyn/closer.lua/spark/spark-3.3.1/spark-3.3.1-bin-hadoop3.tgz
二、spark 介绍
1、Spark Core
Spark Core
中提供了Spark
最基础与核心的功能,Spark
其他的功能如:Spark SQL
,Spark Streming
,GraphX
,MLlib
都是在Spark Core
的基础上进行扩展的
2、Spark SQL
Spark SQL
是Spark
用来操作结构化数据的组件,通过Spark SQL
,用户可以使用SQL
或者 Apache Hive
版本的SQL
方言(HQL)
来查询数据
3、Spark Streaming
Spark Streaming
是Spark
平台上针对实时数据进行流式计算的组件,提供了丰富的处理流数据的API
4、Spark MLlib
MLlib
是spark
提供的一个机器学习算法库。Mllib
不仅提供了模型评估,数据导入等额外的功能,还提供了一些更底层的机器学习原语
5、Spark GraphX
GraphX
是spark面向图计算提供的框架与算法库
三、Spark 快速上手
在大数据早期的课程中我们已经学习了MapReduce框架的原理以及基本使用,并且了解了底层数据处理的实现方式,接下来,走进spark的世界,了解他是如何完成数据处理的
1、创建maven项目
(1) 增加Scala 插件
Spark 由 Scala 语言开发的,所以本课件接下来的开发所使用的语言也为Scala,咋们当前使用的Spark版本为 3.3.0,默认采用的Scala 编译版本为 2.12,所以后续开发时。这个创建项目和之前Scala 项目是一样的
(2) 增加依赖关系
这个是pom.xml
文件里的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Spark02</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!-- <modules>-->
<!-- <module>spark-core</module>-->
<!-- </modules>-->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
<!--基础配置-->
<!-- 基础配置 -->
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
<executions>
<execution>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
(3) 添加 log4j.properties 日志文件
设置之后,运行程序就不会有一大堆日志文件
log4j.rootLogger=stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/hdfs.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
四、在Windows 上面安装spark
1、解压Spark压缩包
2、配置环境变量
添加SPARK_HOME
,注意全部是大写
然后Path
里面也要添加,%SPARK_HOME%\bin
启动 Spark
在Spark 安装目录bin目录下面,有一个 spark-shell.cmd
shell 命令脚本,双击启动
这样就启动成功了
4、测试 WordCount 案例
首先在 D盘下面准备一个测试的文件,存放单词
首先使用 sc.textFile("D//wc.txt")
把文件给读取出来,然后接下来进行flatMap(_.split(" "))
映射扁平化操作把每一行按照空格切割成一个一个单词。然后按照单词进行分组,groupBy(word => word)
一样的单词分到一个组。然后用map{case (word,list) => (word,list.size)}
,进行模式匹配,第一个是单词的key,第二个是单词的size也就是单词出现的次数,然后使用collect()
将结果打印出来,最后使用foreach(println)
方法进行遍历。