• 学习笔记八


      今天学习了RDD被创建好以后,在后续使用过程中一般会发生两种操作:
        转换(Transformation): 基于现有的数据集创建一个新的数据集。
        行动(Action):在数据集上进行运算,返回计算值。

      进行转换操作时,并不会立即进行计算,只有进行行动操作时,才会进行计算。下面列出一些常见的转换操作(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中进行聚合。

      下面列出一些常见的行动操作(Action API):
      * count() 返回数据集中的元素个数
      * collect() 以数组的形式返回数据集中的所有元素
      * first() 返回数据集中的第一个元素
      * take(n) 以数组的形式返回数据集中的前n个元素
      * reduce(func) 通过函数func(输入两个参数并返回一个值)聚合数据集中的元素
      * foreach(func) 将数据集中的每个元素传递到函数func中运行*

      创建键值对Rdd

      1.使用map()函数创建

      2.通过并行集合(数组)创建

      常用的键值对转换操作:reduceByKey()、groupByKey()、sortByKey()、join()、cogroup()

      reduceByKey(func):

      reduceByKey(func)的功能是,使用func函数合并具有相同键的值。比如,reduceByKey((a,b) => a+b),有四个键值对(“spark”,1)、(“spark”,2)、(“hadoop”,3)和(“hadoop”,5),对具有相同key的键值对进行合并后的结果就是:(“spark”,3)、(“hadoop”,8)。

      groupByKey():

      groupByKey()的功能是,对具有相同键的值进行分组。比如,对四个键值对(“spark”,1)、(“spark”,2)、(“hadoop”,3)和(“hadoop”,5),采用groupByKey()后得到的结果是:(“spark”,(1,2))和(“hadoop”,(3,5))。

      keys:

      keys只会把键值对RDD中的key返回形成一个新的RDD。比如,对四个键值对(“spark”,1)、(“spark”,2)、(“hadoop”,3)和(“hadoop”,5)构成的RDD,采用keys后得到的结果是一个RDD[Int],内容是{“spark”,”spark”,”hadoop”,”hadoop”}。

      values:

      values只会把键值对RDD中的value返回形成一个新的RDD。比如,对四个键值对(“spark”,1)、(“spark”,2)、(“hadoop”,3)和(“hadoop”,5)构成的RDD,采用keys后得到的结果是一个RDD[Int],内容是{1,2,3,5}。

      sortByKey():

      sortByKey()的功能是返回一个根据键排序的RDD。  

      mapValues(func):

      mapValues(func)的功能是不改变键的情况下,改变值。如,对四个键值对(“spark”,1)、(“spark”,2)、(“hadoop”,3)和(“hadoop”,5),执行rdd.mapValues(x => x+1)后的结果为(“spark”,2)、(“spark”,3)、(“hadoop”,4)和(“hadoop”,6)。

      join:

      join是连接操作,比如,rdd1是一个键值对集合{(“spark”,1)、(“spark”,2)、(“hadoop”,3)和(“hadoop”,5)},rdd2是一个键值对集合{(“spark”,”fast”)},那么,rdd1.join(rdd2)的结果就是一个新的RDD,这个新的RDD是键值对集合{(“spark”,1,”fast”),(“spark”,2,”fast”)}。

      

  • 相关阅读:
    大数据下的质量体系建设
    快速打造属于你的接口自动化测试框架
    测试环境问题排查的那些事儿
    100个任务,用多机实现
    shell 在一个文件中查找数字
    shell中的awk使用
    shell怎么实现多进程
    删除字符串S1中的子串S2
    C++11的新特性
    C++里面普通指针怎么转换成智能指针
  • 原文地址:https://www.cnblogs.com/liyuchao/p/12276162.html
Copyright © 2020-2023  润新知