zoukankan      html  css  js  c++  java
  • RDD操作

    RDD操作

    RDD操作

    1.对一个数据为{1,2,3,3}的RDD进行基本的RDD转化操作

    函数名 目的 示例 结果

    map()

    函数应用于RDD中的每个元素 rdd.map(x=>x+1) {2,3,4,4}
    flatMap() 将函数应用于RDD中的每个怨毒,通常用来切分单词 rdd.flatMap(x=>x.to(3)) {1,2,3,2,3,3,3}
    filter() 返回一个通过传给filter()的函数的元素组成的RDD rdd.filter(x=>x!=1) {2,3,3}
    distinct() 去重 rdd.distinct()

    {1,2,3}

    sample(withReplacement,fraction,[seed]) 对RDD进行采样,以及是否替换 rdd.sample(false,0.5) 非确定

    2.对数据分别为{1,2,3}和{3,4,5}的RDD进行针对两个RDD的转化操作

    函数名 目的 示例 结果
    union() 生成一个包含两个RDD中所有元素的RDD rdd.union(other) {1,2,3,3,4,5}
    intersection() 求两个RDD共同的元素RDD rdd.intersection(other) {3}
    subtract() 移除一个元素的内容 rdd.subtract(other) {1,2}
    cartesian() 与另一个RDD的笛卡儿积 rdd.cartesian(other) {(1,3),(1,4)...(3,5)}

    3.对一个数据为{1,2,3,3}的RDD进行基本的RDD行动操作

    函数名 目的 示例 结果
    collect() 所有元素 rdd.collect() {1,2,3,3}
    count() 元素个数 rdd.count() 4
    countByValue() 各元素在rdd中出现的次数 rdd.countByValue() {(1,1),(2,1),(3,2)}
    take(num) 从rdd中返回num个元素 rdd.take(2) {1,2}
    top(num) 从rdd中返回最前面的num个元素 rdd.top(2) {3,3}
    takeOrdered(num)(ordering) 按提供的顺序,返回最前面的怒骂个元素 rdd.takeOrdered(2)(myOrdering) {3,3}
    takeSample(withReplacement,num,[seed]) 从rdd中返回任意一些元素 rdd.takeSample(false,1) 非确定的
    reduce(func) 冰雷整合RDD中的所有数据 rdd.reduce((x,y)=>x+y) 9
    fold(zero)(func) 和reduce一样,但是需要初始值 rdd.fold(0)((x,y)=>x+y) 9
    aggregate(zeroValue)(seqOp,combOp) 和reduce()相似,但是通常返回不同类型的函数

    rdd.aggregate((0,0))((x,y)=>(x,y)=>(x._1+y,x._2+1),(x,y)=>(x._1+y._1,x._2+y._2))

    (9,4)
    foreach(func) 对RDd中的每个元素使用给定的元素 rdd.foreach(func)

    键值对操作

    4.pair RDD的转化操作(以键值对集合{(1,2),(3,4),(3,6)}为例)

    函数名 目的 示例 结果
    reduceByKey(func) 合并具有相同键的值 rdd.reduceByKey((x,y)=>x+y) {(1,2),(3,10)}
    groupByKey() 对具有相同键的值进行分组 rdd.groupByKey() {(1,[2]),(3,[4,6])}
    combineByKey(createCombiner,mergeCombiners,partitioner) 使用不同的返回类型合并具有相同键的值    
    mapValue(func) 对pairRDD中的每个值应用一个函数而不改变键 rdd.mapValues(x=>x+1) {(1,3),(3,5),(3,7)}
    flatMapValues() 对pairRDD中的每个值应用一个返回迭代器的函数,然后返回的每个元素都生成一个对应原键的键值对记录,通常用于符号化 rdd.flatMapValues(x=>(x to 5)) {(1,2),(1,3),(1,4),(1,5),(3,4),(3,5)}
    keys() 返回一个仅包含键的RDD rdd.keys() {1,3,3}
    values() 返回一个仅包含值的RDD rdd.values() {2,4,6}
    sortByKey() 返回一个根据键排序的RDD rdd.sortByKey() {(1,2),(3,4),(3,6)}

    针对两个pairRDD的转换操作(rdd={(1,2),(3,4),(3,6)} other={(3,9)})

    函数名 目的 示例 结果
    subtractByKey 删掉RDD中的键与otherRDD中的键相同的元素 rdd.subtractByKey(other) {(1,2)}
    join 对两个rdd进行内链接 rdd.join(other) {(3,(Some(4),9)),(3,(Some(6),9))}
    rightOuterJoin 连接操作,确保第一个rdd的键必须存在(右外连接) rdd.rightOuterJoin(other) {(3,(4,Some(9))),(3,(4,Some(9)))}
    leftOutrtJoin 连接操作,确保第二个rdd的键必须存在(左外连接) rdd.leftOuterJoin(other) {(1,(2,None)),(3,(4,Some(9))),(3,(6,Some(9)))}
    cogroup 将两个rdd中拥有相同键的数据分组到一起 rdd.cogroup(other) {(1,([2],[])),(3,([4,6],[9]))}

    5.PairRDD 的行动操作(以键值对集合{(1,2),(3,4),(3,6)})

    函数 描述 示例 结果
    countByKey() 对每个键对应的元素分别计数 rdd.countByKey() {(1,1),(3,2)}
    collectAsMap() 将结果以映射表的形式返回,以便查询 rdd.collectAsMap() Mqp{(1,2),(3,4),(3,6)}
    lookup(key) 返回给定键对应的所有值 rdd.lookup(3) [4,6]
  • 相关阅读:
    SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)
    算法大神之路----排序(插入排序法)
    Redis的基本使用(基于maven和spring)
    算法大神之路----排序(选择排序法)
    exe4j 安装
    png转ico网站
    artTemplate/template.js模板将时间格式化为正常的日期
    artTemplate js模板引擎动态给html赋值
    IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求
    Windows Server2012 R2 安装.NET Framework 3.5失败解决方法
  • 原文地址:https://www.cnblogs.com/nucdy/p/6541362.html
Copyright © 2011-2022 走看看