Spark数据结构之RDD

一、Spark对RDD的计算原理

RDD是弹性分布式数据集,即Spark对数据的核心抽象,Spark对数据的操作其实就是对RDD的创建、转换、计算。每个RDD都会分区,这些分区会被Spark自动分发到集群上去并行操作。只有第一次对RDD的计算发生时,Spark才会对RDD进行并行执行,在创建转换的环节先不予操作,这样可以只计算RDD的结果而不是将所有数据先保存再遍历计算,可以节省空间,提高处理速度。
RDD会在每次被处理时进行重新计算,保留最后一次处理的结果数据。如果需要对同一个RDD进行重复计算,可以用 RDD.persist() 将此RDD进行保存,RDD.unpersist()可以将不用的分区移除。

Spark程序的工作方式:
  • 外部导入文件创建为RDD
  • 使用filter、map等将RDD转换为新的RDD
  • 将需要重用的RDD保存起来
  • RDD的首次计算发生时,Spark开始对计算进行优化然后并行执行
//创建:获取文件README.md的每行内容并创建为RDD文件
val lines=sc.textFile("README.md")
//创建2:直接将集合传给sc的parallelize转换为RDD
val test=sc.parallelize([1,2,3])
//转换:获取含Python的每行内容转换为RDD文件
val line_python=lines.filter(line => line.contains("python"))
val line_python.persist
//计算1:计算含Python的行数
println(line_python.count())
//计算2:输出含Python的10行
line_python.take(10).foreach(println)
//计算3:输出含Python的所有行
line_python.collect()//collect只适用于可以单机存储的少量结果数据,分布式存储的大数据不能使用
line_python.saveAsTextFile()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值