spark项目开发技术_竹子搭建的大门

Java (40) 2023-03-24 20:40

大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」


大家好,我是一条~

5小时推开Spark的大门,第二小时,带大家搭建开发环境。

主要分两步,

  • Spark的安装
  • Scala环境的搭建

话不多说,动起来!

Spark的安装

Spark是基于Scala语言编写的,需要运行在JVM上,运行环境Java7以上,本文使用Java8,Centos7。

用Python也是可以的,但本教程不详细讲。

1.下载Spark

我使用的是腾讯云的服务器,没有的同学用虚拟机也是可以的,Win和Mac如何安装虚拟机不再赘述,CSDN有很多教程,也比较简单。

记得要配置好Java的环境变量哦!

首先使用wget下载安装包(也可以本地下载之后上传)

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第1张

cd /data/opt/spark
wget --no-check-certificate https://downloads.apache.org/spark/spark-3.2.0/spark-3.2.0-bin-hadoop3.2.tgz

下载完成后解压

可以改个短一些的名字,版本号最好保留

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第2张

tar -zxf spark-3.2.0-bin-hadoop3.2.gz

2.Spark目录简介

可以自己cd进去看一看

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第3张

  • bin:主要存放一些可执行文件。
  • streaming、python、R、jars:主要存放组件源代码。
  • examples: 存放一些可运行的单机Spark Job案例。
  • conf:存放配置文件。
  • data:存放数据文件。
  • sbin:存放sh脚本。

3.启动Spark

进入sbin目录,执行./start-master.sh文件。

根据输出的内容,找到日志。

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第4张

查看日志

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第5张

访问网页端,如果是服务器记得开放对应端口。

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第6张

ok,启动成功!

3.Spark Shell

Spark-Shell是一种学习API的简单方式,能够交互式的分析数据。能够把分布在集群上的数据加载到内存节点中,使分布式处理可以秒级完成。

快速实时的查询、计算、分析一般都在Shell中完成。

所以要学习Spark程序开发,建议先学习Spark-Shell交互式学习,加深对Spark程序开发的理解。

Spark提供了Python Shell和Scala Shell两种,本套课程使用Scala。

进去bin目录,执行spark-shell

cd bin
./spark-shell

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第7张

ok,为了很好体会Spark-Shell,实验一个例子:读取一个文件,并计算行数

首先创建一个测试文件,linux的基本操作哈

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第8张

hello scala!
hello spark!
hello world!

回到Shell

先读取文件,再计算行数

var lines=sc.textFile("../../file/test")
// 总行数
lines.count()
// 第一行
lines.first()

输出如下:

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第9张

到此,Spark安装完成,同学们可能发现一个问题,这每次写代码也太麻烦了,就不能像Java代码一样吗?

当然是可以的,下面就教大家怎么给IDEA配置Scala插件。

IDEA集成Scala插件

IDEA相信大家都用过,不再赘述安装激活成功教程的过程。

1.安装插件

settings里面按图片示例安装Scala插件,会比较慢。安装成功后需要重启IDEA。

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第10张

2.创建Maven项目

如图,新建一个Maven项目,起个名字,叫spark-wordcount

导入依赖

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.2.0</version>
        </dependency>
    </dependencies>

我们写完程序肯定是要放到服务器运行的,就像Java一样,所以还要配置打包参数。

<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>

reload之后如果没问题,我们的项目就创建好了。

下面新建一个类WordCount

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第11张

注意是Scala Class,然后选择Object。

再写个main方法,作为程序的入口,和Java有很多相似的地方。

打印测试一下

object WordCount {
  def main(args: Array[String]): Unit = {
    print("hello world!")
  }
}

输出结果

spark项目开发技术_竹子搭建的大门_https://bianchenghao6.com/blog_Java_第12张

ok,开发环境已经搭建完毕。

最后

本日打卡内容到此结束,偏实战多一些,同学们一定要亲自操作,下一节课带大家做一个大数据入门的经典案例——WordCount。

发表回复