【小白视角】大数据基础实践(七) Spark的基本操作_spark操作类型

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

RDD典型的执行顺序如下:

  • RDD读入外部数据源进行创建
  • RDD经过一系列的转换(Transformation)操作,每一次都会产生不同的RDD,供给下一个转换操作使用
  • 最后一个RDD经过“动作”操作进行转换,并输出到外部数据源
  • 这一系列处理称为一个Lineage(血缘关系),即DAG拓扑排序的结果

RDD的 transformationsactions

点击这里

RDD 运行过程:

  1. 创建 RDD 对象;
  2. SparkContext 负责计算 RDD 之间的依赖关系,构建 DAG
  3. DAGScheduler 负责把 DAG 图分解成多个 Stage ,每个 Stage 中包含了多个Task ,每个 Task 会被 TaskScheduler 分发给各个 WorkerNode 上的 Executor 去执行。
3.4.3 Scala

Scala 是一门现代的多范式编程语言,运行于 Java 平台( JVM Java 虚拟机),并兼容现有的 Java 程序

Scala 的特性:

  1. Scala 具备强大的并发性,支持函数式编程,可以更好地支持分布式系统
  2. Scala 语法简洁,能提供优雅的API
  3. Scala 兼容Java ,运行速度快,且能融合到 Hadoop 生态圈中
  4. Scala 是 Spark 的主要编程语言,但 Spark还支持 JavaPythonR 作为编程语言
  5. Scala 的优势是提供了 REPL Read Eval Print Loop,交互式解释器 ),提高程序开发效率

4. SparkSQL

Spark SQL在Hive兼容层面仅依赖HiveQL解析、Hive元数据,也就是说,从HQL被解析成抽象语法树(AST)起,就全部由Spark SQL接管了。Spark SQL执行计划生成和优化都由Catalyst(函数式关系查询优化框架)负责

在这里插入图片描述

  • Spark SQL增加了SchemaRDD(即带有Schema信息的RDD),使用户可以在Spark SQL中执行SQL语句,数据既可以来自RDD,也可以是Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据
  • Spark SQL目前支持Scala、Java、Python三种语言,支持SQL-92规范

在这里插入图片描述

5. Spark编程实践

5.1 编程环境
  • 操作系统:Linux(建议Ubuntu18.04或Ubuntu16.04);
  • Hadoop版本:3.1.3或2.7.1;
  • JDK版本:1.8;
  • Hadoop伪分布式配置
  • Spark 2.4.8或自编译版本
  • Scala 2.11.8或2.8.0
5.2 实验步骤:
5.2.1 Spark环境配置
  1. 检测java环境和hadoop环境。
    在这里插入图片描述
  2. 安装包下载
    在这里插入图片描述
    Scala: https://www.scala-lang.org/download/all.html
    Spark: http://spark.apache.org/downloads.html
    关于 Spark 官网下载页面中 Choose a package type 几个选项说明:
  • Source Code:spark 源码,需要编译才能使用,可以自由设置编译选项;
  • Pre-build with user-provide Hadoop:属于 Hadoop free 版本,用应用到任意 Hadoop 版本;
  • Pre-build for Hadoop 2.7、Pre-build for Hadoop 2.6:分别基于 Hadoop2.7、2.6 的预先编译版本,需要与本机安装的 Hadoop 版本对应使用;
  • Pre-build with Scala 2.12 and user provided Apache Hadoop:预先编译的版本,包含了 Scala2.12,可应用于任意 Hadoop 版本。
  1. 安装scala

解压安装包(sudo tar -zxvf scala-2.11.8.tgz -C /usr/local/),并更改 scala
在这里插入图片描述

所属用户和用户组为当前用户及所在组。
在这里插入图片描述
在这里插入图片描述

配置环境变量:添加

S

C

A

L

A

H

O

M

E

s

c

a

l

a

SCALA_HOME 变量为 scala 解压路径,并在

SCALAH​OME变量为scala解压路径,并在PATH 变量添加相应 的 bin 目录。
在这里插入图片描述
在这里插入图片描述

使得环境生效
在这里插入图片描述

查看是否安装成功
在这里插入图片描述
已经成功了!

  1. 安装spark

解压安装包(sudo tar -zxvf spark-2.4.8-bin-without-hadoop.tgz -C /usr/local/),更改所属用户及用户组,并将目录重命名为 spark-2.4.8,方便后续配置:
在这里插入图片描述

更改所属用户及用户组
在这里插入图片描述

并将目录重命名为 spark-2.4.8
在这里插入图片描述

配置环境变量,添加 SPARK_HOME 变量,并在 PATH 变量中添加相应的 bin 目录。
export SPARK_HOME=/usr/local/spark-2.4.8
export PATH=

P

A

T

H

:

PATH:

PATH:SPARK_HOME/bin在这里插入图片描述

在这里插入图片描述
Spark 配置文件配置:

在这里插入图片描述

将 spark-env.sh.template 文件复制为 spark-env.sh 文件:
在这里插入图片描述

并配置内容如下:
在这里插入图片描述

启动 spark:启动 spark 之前要先启动 HDFS
在这里插入图片描述

在这里插入图片描述

启动之后网页访问 Master:8080 可以查看当前 Spark workers 状态。
在这里插入图片描述

Spark-shell 进入spark shell
在这里插入图片描述

会有这种错误
在这里插入图片描述

但不需要慌张!不影响使用 scala 使用,如果要解决,可以通过添加系统环境变量。export TERM=xterm-color
在这里插入图片描述
在这里插入图片描述

就不会有了
在这里插入图片描述

1.5 举个例子
通 过 spark-submit 命令运行 spark 自 带 实 例 , spark 自 带 实 例 都 在
SPARK_HOME/examples/jars/spark-examples_2.11-2.4.8.jar 中提供:

spark-submit --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.4.8.jar

注:在运行SparkPi实例时会输出很多运行日志,可以通过加 grep 命令进行过滤,显示关心的信息:

在这里插入图片描述

5.2.2 spark shell中编写Scala代码实现:

(1)分别从本地文件HDFS上的文件以及Spark Context的parallelized()方法生成分别生成RDD_1、RDD_2、RDD_3,要求本地文件格式为每行多个单词,以空格隔开;HDFS上的文本为每行1个单词,即单词以换行符隔开,每个RDD中都要包含1个或多个你的学号或者姓名拼音;
1.1 本地创建in.txt
在这里插入图片描述
写入内容
在这里插入图片描述
上传到spark
在这里插入图片描述
1.2 本地创建文件in0.txt
在这里插入图片描述
写入数据
在这里插入图片描述
上传到hdfs中
在这里插入图片描述
检查是否上传成功
在这里插入图片描述上传到spark
在这里插入图片描述

1.3 spark创建文件
在这里插入图片描述

创建成功!

(2) 输出RDD_1的第一行、RDD_2的所有内容、RDD_3的最大值;
2.1RDD_1的第一行
在这里插入图片描述
2.2 RDD_2的所有内容
在这里插入图片描述

2.3 RDD_3的最大值
在这里插入图片描述

(3) 统计 RDD_1 中“姓名拼音”、“学号”两个单词出现的次数;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结果:
zqc 有6个
031904102 有 4个

(4) 对去重后的 RDD_1再去掉RDD_2中的内容;
在这里插入图片描述在这里插入图片描述在这里插入图片描述

(5) 将上述结果与RDD_3合并,并将RDD_3分别写入本地文件系统和HDFS文件系统;
在这里插入图片描述
在这里插入图片描述
查看是否成功放入
在这里插入图片描述
在这里插入图片描述
(6)编写scala代码实现写入任意内容到HDFS中,文件路径自定义,文件以”学号-姓名拼音.txt”命名。

先创建一个文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在HDFS上查看
在这里插入图片描述

5.2.3 编写Scala独立应用程序:

使用 Scala 语言编写的 Spark 程序,需要使用 sbt 进行编译打包。Spark 中没有自带sbt,需要单独安装。可以到 官网 下载 sbt 安装文件,最新版即可
在这里插入图片描述
在这里插入图片描述

下载好
在这里插入图片描述

创建一个目录
在这里插入图片描述

这里我们把 sbt 安装到“/usr/local/sbt”目录下,执行如下命令:
在这里插入图片描述

在这里插入图片描述
把 bin 目录下的 sbt-launch.jar 复制到 sbt 安装目录下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
新建一个文件然后将下列内容写下去

#!/bin/bash 
SBT\_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" 
java $SBT\_OPTS -jar `dirname $0`/sbt-launch.jar "$@"

在这里插入图片描述

保存后,还需要为该 Shell 脚本文件增加可执行权限:
然后,可以使用命令 sbt sbtVersion 查看 sbt 版本信息:
在这里插入图片描述
完成了,是有一点点慢!
在这里插入图片描述

(1) 实现wordcount功能,并将结果写入本地文件;
在本地创建目录
在这里插入图片描述
在这里插入图片描述

创建这个文件。

在这里插入图片描述

写入数据。

在这里插入图片描述
检查目录结构
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)分别使用sbt打包上述程序;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)通过spark-submit执行生成的jar。
在这里插入图片描述
在这里插入图片描述

  1. 编写Scala独立应用程序:

实现生成任意RDD,并将结果写入文件;



![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712001510469.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 重命名并设置权限组  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712001526123.png)


在终端中执行如下命令创建一个文件夹 spark\_zqc\_maven\_scala 作为应用程序根,目录:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712001541539.png)


写入下面内容


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712001555343.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


(2) 分别使用maven打包上述程序;  
 该 程 序 依 赖 Spark Java API, 因 此 我 们 需 要 通 过 Maven 进 行 编 译 打 包 。 在./spark\_zqc\_maven\_scala 目录中新建文件 pom.xml,然后,在 pom.xml 文件中 添加如下内容,用来声明该独立应用程序的信息以及与 Spark 的依赖关系:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712001622267.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


为了保证 Maven 能够正常运行,先执行如下命令检查整个应用程序的文件结构,


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712001635821.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


![img](https://img-blog.csdnimg.cn/img_convert/0a2d7c811c3fc6481296bc0afa5dfddc.png)
![img](https://img-blog.csdnimg.cn/img_convert/b2012533fe6ada7b0b2f4ba974ef87dc.png)
![img](https://img-blog.csdnimg.cn/img_convert/b4a25da176b498d1f73cf59e0c832d1c.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

.cn/20210712001635821.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


[外链图片转存中...(img-iAKgeYnG-1715002117286)]
[外链图片转存中...(img-MSjA7fwe-1715002117286)]
[外链图片转存中...(img-z4fTezqB-1715002117287)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值