大数据应用技术实验报告七 Spark

本文探讨了Spark的优势,特别是在迭代运算中的高效性,以及其丰富的数据集操作。通过一个简单的Spark“Hello World”程序展示了如何进行数据处理。Spark支持Scala、Java和Python编程,其转换和行动操作构建于RDD抽象之上,形成了DAG执行模型。文章还涵盖了Spark的环境配置、版本兼容性、安装步骤以及使用Spark Shell进行交互式编程。最后,提到了Spark与Hadoop的对比,强调Spark在速度和通用性上的提升。
摘要由CSDN通过智能技术生成

Spark好在哪里?
Spark的中间数据放到内存中,对于迭代运算效率更高。
Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。
Spark比Hadoop更通用
Spark提供的数据集操作类型有很多
①Transformations转换操作:map, filter, flatMap, sample, groupByKey, reduceByKey, union, join, cogroup, mapValues, sort,partionBy等。
②actions行动操作:Count, collect, reduce, lookup, save等。

例:一个Spark的“Hello World”程序
读取一个HDFS文件,计算包含字符串“Hello World”行数
val sc= new SparkContext(“spark://localhost:7077”,”Hello World”, “YOUR_SPARK_HOME”,”YOUR_APP_JAR”)
val fileRDD = sc.textFile(“hdfs://192.168.0.103:9000/examplefile”)
val filterRDD = fileRDD.filter(_.contains(“Hello World”))
filterRDD.cache()
filterRDD.count()
//创建SparkContext对象
在spark程序运行起来后,程序就会创建sparkContext,解析用户的代码,当遇到action算的时候开始执行程序,但是在执行之前还有很多前提工作要在sparkContext中做的。

val fileRDD = sc.textFile(“hdfs://192.168.0.103:9000/examplefile”)
//从HDFS文件中读取数据创建一个RDD
RDD是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可以分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群中的不同节点上进行并行计算。RDD提供了一种高度受限的共享内存模型.

val filterRDD = fileRDD.filter(_.contains(“Hello World”))
//对fileRDD进行转换操作得到一个新的RDD,即filterRDD。

filterRDD.cache()
//对filterRDD进行持久化
把它保存在内存或磁盘中(这里采用cache接口把数据集保存在内存中),方便后续重复使用,当数据被反复访问时ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值