Spark自学之路(四)——RDD编程

RDD编程

Spark针对RDD的操作包括创建RDD,转换操作(返回RDD),行动操作(返回结果)

RDD创建

1:sc.parallelize(),需要把整个数据集加载到放在一台机器的内存中,多用于开发和原型测试
2:sc.textFile(),更常用的是从外部数据集的读取

从文件系统中加载数据创建RDD

textFile(),该方法把文件的URI作为参数,这个URI可以是本地文件系统,或者分布式文件系统HDFS的地址等等

from pyspark import SparkContext
sc = SparkContext( 'local[*]', 'test')
lines = sc.textFile("file:///usr/local/spark/mycode/wordcount/word.txt")
//lines = sc.textFile("hdfs://Master:9000/README.md")

1:如果使用使用本地文件系统的路径,那么必须保证在所有的worker节点上,也都能够采用相同的路径访问到该文件
2:textFile()方法的参数可能是文件名,目录或者压缩文件等
3:textFile()也可以接受第二个输入参数(可选,参数不可以小于HDFS设置的block大小),用来指定分区的数目。默认情况下,Spark会为HDFS的每个block创建一个分区

可以调用SparkContext的parallelize()方法,在Driver中一个已经存在的集合(数组)上创建:

from pyspark import SparkContext
sc = SparkContext( 'local[*]', 'test')
nums = [1,2,3,4,5]
rdd = sc.parallelize(nums)

RDD的操作

    RDD支持两种操作转化操作和行动操作:
    转化操作:返回一个新的RDD
    行动操作:向驱动器程序返回结果或者把结果写入到外部系统

1:转化操作

        通过转化操作,你从已有的RDD中派生出新的RDD,Spark会使用谱系图来记录这些不同RDD之间的依赖关系,Spark会根据这些信息按需计算每个RDD,也可以依靠谱系图在持久化的RDD丢失部分数据时恢复RDD 转换得到的RDD是惰性求值的,也就是说,整个转换过程只是记录了转换的轨迹,并不会发生真正的计算,只有遇到行动操作时,才会发生真正的计算,开始从血缘关系源头开始,进行物理的转换操作。
下面列出一些常见的转换操作(Transformation API):
filter(func):筛选出满足函数func的元素,并返回一个新的数据集
map(func):将每个元素传递到函数func中,并将结果返回为一个新的数据集
flatMap(func):与map()相似,但每个输入元素都可以映射到0或多个输出结果
groupByKey():应用于(K,V)键值对的数据集时,返回一个新的(K, Iterable)形式的数据集
reduceByKey(func):应用于(K,V)键值对的数据集时,返回一个新的(K, V)形式的数据集,其中的每个值是将每个key传递到函数func中进行聚合

2:行动操作

行动操作是真正触发计算的地方。Spark程序执行到行动操作时,才会执行真正的计算,从文件中加载数据,完成一次又一次转换操作,最终,完成行动操作得到结果。
下面列出一些常见的行动操作(Action API):
count() 返回数据集中的元素个数
collect() 以数组的形式返回数据集中的所有元素
first() 返回数据集中的第一个元素
take(n) 以数组的形式返回数据集中的前n个元素
reduce(func) 通过函数func(输入两个参数并返回一个值)聚合数据集中的元素
foreach(func) 将数据集中的每个元素传递到函数func中运行*

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SUISUIZHIBO

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

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

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

打赏作者

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

抵扣说明:

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

余额充值