zoukankan      html  css  js  c++  java
  • 学习笔记八

      今天学习了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”)}。

      

  • 相关阅读:
    不用π求坐标夹角大小
    使用LVS实现负载均衡原理及安装配置详解
    从dfs向动态规划过渡
    关于dfs
    [LeetCode] Add Two Numbers
    [LeetCode] Gray Code
    [LeetCode] Single Number
    第四章 深入JSP技术
    蚂蚁破2万亿!身价暴涨2077亿的彭蕾:无论马云的决定是什么,我都让它成为最正确的决定...
    异常场景测试
  • 原文地址:https://www.cnblogs.com/liyuchao/p/12276162.html
Copyright © 2011-2022 走看看