zoukankan      html  css  js  c++  java
  • RDD动作算子(action)

    RDD的动作算子

    • reduce(func)

      通过func函数聚集RDD中的所有元素,这个功能必须是可交换且可并联的。(符合结合律和交换律),func输入为两个元素,返回为一个元素。

        def add(x,y):
        	return x+y
      
        sc.parallelize([1, 2, 3, 4, 5]).reduce(add)
        #结果
        15
      
    • collect()

      以列表的形式返回数据集的所有元素

        sc.parallelize([1, 2, 3, 4, 5]).collect()
        #结果
        [1,2,3,4,5]
      
    • count()

      返回RDD的元素个数

        sc.parallelize([2, 3, 4]).count()
        #结果
        3
      
    • first()

      返回RDD的第一个元素(类似与take(1))

        sc.parallelize([2,3,4]).first()
        #结果
        2
      
    • take(n)

      返回一个由数据集的前n个元素组成的数组

        sc.parallelize([1,2,3,4,5]).take(3)
        #结果
        [1,2,3]
      
    • foreach(func)

      将一个函数应用于此RDD的所有元素。

        def f(x):
        	print(x)
      
        sc.parallelize([1,2,3]).foreach(f)
        #结果
        1
        2
        3
      
    • top(num)

      返回RDD内部元素的前n个最大值

        sc.parallelize([2,3,4]).top(2)
        #结果
        [4,3]
      
    • saveAsTextFile(path)

      将数据集的元素以textfile的形式保存到HDFS文件系统或者其他支持的文件系统,对于每个元素,Spark将会调用toString方法,将它装换为文件中的文本

        sc.parallelize([2,3,4]).saveAsTextFile('/home/hadoop/0444')
        
        cd 0444/
        cat part-00000
        #结果
        2
        3
        4
      
    • aggregate(zeroValue, seqOp, combOp)

    操作的初始值是zeroValue,seqOp是聚合各分区中的元素,combop是将聚合各分区中元素的结果再次进行聚合

    rdd1 = sc.parallelize([1,2,3,4,5],2)
    result2 = rdd1.aggregate(0,lambda x,y:max(x,y),lambda x,y:x+y)
    print(result2)
    
    result3 = rdd1.aggregate(0,lambda x,y:x+y,lambda x,y:x+y)
    print(result3)
    
    result4 = rdd1.aggregate(10,lambda x,y:max(x,y),lambda x,y:x+y)
    print(result4)
    
    rdd1 = sc.parallelize(["a","b","c","d","e","f"],2)
    result5 = rdd1.aggregate("",lambda x,y:x+y,lambda x,y:x+y)
    print(result5)
    
    result6 = rdd1.aggregate("|",lambda x,y:x+y,lambda x,y:x+y)
    print(result6)
    
    rdd7=sc.parallelize(["12","23","345","4567"],2)
    rdd7.aggregate('',lambda x,y:max(len(str(x)),len(str(y))),lambda x,y:str(x)+str(y))
    
  • 相关阅读:
    进击的实时数仓:Flink 在 OPPO 实时计算平台的研发与应用实践
    vue中将时间戳转换为YYYY-MM-dd hh:mm格式时间的组件
    vue 将时间戳转换成日期格式 (一)
    element-ui DatePicker 日期选择器 让结束日期大于开始日期
    css 边框上如何写入文字?
    2019最新Web前端经典面试试题(含答案)
    Nginx 安装及配置
    前端基础面试题(JS部分)
    const与指针
    linux配置-------redhat虚拟机的中文输入法配置
  • 原文地址:https://www.cnblogs.com/jiajiaba/p/10658134.html
Copyright © 2011-2022 走看看