Spark Python API 学习(4)

常用API讲解-转换操作

转换操作:DD的行动操作的结果是具体的数据(一定记住,Spark是惰性运算,只有行动操作cpu才会真正执行计算)
1.collect() #collect()的作用是输出经过转化操作的RDD的所有元素,前边也一直在用,不做举例。
2.count() #计算出RDD中元素的个数
    rdd = sc.parallelize([1,2,3])
    print(rdd.count()) #输出结果3
3.countByValue() #统计每个元素在RDD中出现的次数,以键值对的形式返回
    rdd = sc.parallelize([1,2,3,3])
    print(rdd.countByValue()) #输出结果{[1,1],[2,1],[3,2]},表示1出现了一次,2出现了一次,3出现了两次
4.take(num) #返回RDD中前num个元素
    rdd = sc.parallelize([1,2,3,2,1])
    print(rdd.take(2)) #输出结果[1,2]
5.top(num) #返回RDD中最大的num个元素
    rdd = sc.parallelize([1,2,3,2,1])
    print(rdd.top(2)) #输出结果[3,2],他所谓的大在纯数字的时候好理解,如果换成字符串,它内部应该是对字符串有编码的,应该是按照UTF-8
                      #具体使用的时候还是要测试一下,这个使用需谨慎。
6.takeOrdered(num) #返回RDD按照提供的顺序的前num个元素(其实应该就是按照从小到大的先后顺序)(RDD读取数据的顺序应该是按照从小到大的先后顺序)
    rdd = sc.parallelize([1,2,3,2,1])
    print(rdd.takeOrdered(2)) #输出结果[1,1]
7.takeSample(True/False,num,[seed]) #对数据进行抽样,True表示有放回的抽样,False表示无放回的抽样,
                                    #其实就是随机返回RDD中随机num个元素,[seed]可选,就是一个计算种子,当seed确定之后,返回的数据将确定
    rdd = sc.parallelize([1,2,3,2,1])
    print(rdd.takeSample(False,2)) #输出结果不确定
    #对有放回和无放回的讲解
    rdd = sc.parallelize([1,1,1]) #为了讲明白True和False的区别,我们将seed固定,因为数据都是1,所以无论seed是多少,输出结果都是一样的
    print(rdd.takeSample(True,4,1)) #有放回,输出结果为[1,1,1,1],因为有放回,所以需要抽4个样本是可以抽取的
    print(rdd.takeSample(False,4,1)) #无放回,输出结果为[1,1,1],因为无放回,所以需要抽取4个样本却只能抽取到3个
8.reduce() #累计运算,接收一个需要两个参数的方法,将RDD中的元素分别作用于这个方法,并进行累计运算,累计运算的意思就是:将第一个和第二个元素运算的结果再和第三个元素运算,以此类推。
    rdd = sc.parallelize([1,2,3,4,5])
    sum = rdd.reduce(lambda x,y: x + y) #我觉得你能看懂
    print(sum) #结果是15
9.fold() #其实他实现的也是累积运算,不过提供了累计运算的初始值,但是这个初始值的含义我并不是很明白,只是这道如果累加用它,初始值得是0
         #累乘运算初始值得是1
    rdd = sc.parallelize([2,3,4])
    sum = rdd.fold(0, lambda x,y: x+y) #累加运算
    mul = rdd.fold(1, lambda x,y: x*y) #累乘运算
    print("sum = " + str(sum))         #其中的str(sum)的含义是将数值型的数据sum转换成字符串型,因为"+"号前边是字符串型,这样"+"才能起到字符串连接符的作用
    print("mul = " + str(mul))
10.aggregate() #没看懂
11.foreach() #没看懂
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值