Spark 单机版环境版的简单操作

文章介绍了如何在单机环境下设置Spark,包括使用SparkPi计算Pi的值,通过Scala和Python版本的Spark-Shell进行基本操作。重点讨论了Spark中的RDD概念,展示了创建、转化和行动操作的例子,如filter()和first(),强调了Spark的惰性计算策略。
摘要由CSDN通过智能技术生成


Spark单机版环境

(一)使用SparkPi来计算Pi的值

执行命令:run-example SparkPi 2 (其中参数2是指两个并行度)
在这里插入图片描述
查看计算结果:Pi is roughly 3.1412357061785308
在这里插入图片描述

(二)使用Scala版本Spark-Shell

执行spark-shell命令,启动Scala版的Spark-Shell
在这里插入图片描述
访问Spark的Web UI界面 - http://master:4040
在这里插入图片描述

注意:Spark 3.3.2使用的Scala版本其实是2.12.15

利用print函数输出了一条信息

println("welcome to spark world!")

在这里插入图片描述
计算1 + 2 + 3 + …… + 100

(1 to 100).reduce(_ + _)

在这里插入图片描述
输出字符直角三角形

(1 to 10).map("*" * _).foreach(println)

在这里插入图片描述
打印九九乘法表

for (i <- 1 to 9; j <- 1 to i; sep = if (i==j) "\n" else "\t") print(i + "*" + j + "=" + (i * j) + sep)

在这里插入图片描述

(三)使用Python版本Spark-Shell

执行pyspark命令启动Python版的Spark-Shell
在这里插入图片描述

安装python3
在这里插入图片描述

执行:pyspark
在这里插入图片描述
输出一条信息,进行加法运算,然后退出交互式环境
在这里插入图片描述

(四)初识弹性分布式数据集RDD

Spark 中的RDD (Resilient Distributed Dataset) 就是一个不可变的分布式对象集合。每个RDD 都被分为多个分区,这些分区运行在集群中的不同节点上。RDD 可以包含Python、Java、Scala 中任意类型的对象,甚至可以包含用户自定义的对象。用户可以使用两种方法创建RDD:读取一个外部数据集,或在驱动器程序里分发驱动器程序中的对象集合(比如list 和set)。

在/Txt目录下创建test.txt文件
在这里插入图片描述

添加如下内容:

hello hadoop hello spark 
I love you hadoop and spark
now I learn hadoop and spark
they are useful and powerful

在这里插入图片描述

例1、创建一个RDD

在pyspark命令行,执行命令:lines = sc.textFile('/Txt/test.txt')
在这里插入图片描述

创建出来后,RDD 支持两种类型的操作: 转化操作(transformation) 和行动操作(action)。转化操作会由一个RDD 生成一个新的RDD。另一方面,行动操作会对RDD 计算出一个结果,并把结果返回到驱动器程序中,或把结果存储到外部存储系统(如HDFS)中。

例2、调用转化操作filter()

执行命令:sparkLines = lines.filter(lambda line: 'spark' in line)
在这里插入图片描述

例3、调用行动操作first()

执行命令:sparkLines.first()
在这里插入图片描述
转化操作和行动操作的区别在于Spark 计算RDD 的方式不同。虽然你可以在任何时候定义新的RDD,但Spark 只会惰性计算这些RDD。它们只有第一次在一个行动操作中用到时,才会真正计算。这种策略刚开始看起来可能会显得有些奇怪,不过在大数据领域是很有道理的。比如,看看例2 和例3,我们以一个文本文件定义了数据,然后把其中包含spark的行筛选出来。如果Spark 在我们运行lines = sc.textFile(…) 时就把文件中所有的行都读取并存储起来,就会消耗很多存储空间,而我们马上就要筛选掉其中的很多数据。相反, 一旦Spark 了解了完整的转化操作链之后,它就可以只计算求结果时真正需要的数据。事实上,在行动操作first() 中,Spark 只需要扫描文件直到找到第一个匹配的行为止,而不需要读取整个文件。

如果要显示全部包含spark的行,执行命令:sparkLines.collect()
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁辰兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值