zoukankan      html  css  js  c++  java
  • 大数据学习之Spark RDD高级算子46

    1)mapPartionWithIndex(func)

    设置分区,并且查看每个分区中存放的元素

    查看每个分区中元素

    需要传递函数作为参数

    val func = (index:Int,iter:Iterator[(Int)]) =>

    {iter.toList.map(x => "partID:" + index + "," + "datas:" + x +

    "]").iterator}

    2)aggregate

    聚合,先局部后全局

    max 取最大值

    min 取最小值

     

    每个分区内先局部相加,再全局相加,

    务必理解这些列子

    这个案例充分体现了并行化的结果

    分析: math.min("".length, "12".length ) 的结果是:0 ,

          math.min("0".length, "23".length ) 的结果是:1  

        math.min("".length, "345".length) 的结果是:0 ,

         math.min("0".length, "".length) 的结果是:0  

    误区:不要以为初始值为"",然后进行简单的比较,比较出来的结果为:0,然后toStringj就是1,记得逐个比较

     

    和上面分析一样的!!!

    3)aggregateByKey

    根据key聚合,先局部再全局

    编写查看分区的func

    def func(index:Int,iter:Iterator[(String,Int)]):Iterator[String] = {iter.toList.map(x => "partID:"+index+","+"valuse:"+x+"]").iterator}

    4)combineByKey

    aggregateByKeyreduceByKey底层调用都是combineByKey

    最底层的方法,先局部累加,再全局累加

    5)coalesce

    coalesce(4,true)

    分区数4

    是否shuffle

    repartition的实现,已默认加了shuffle

    6)filterByRange

    过滤出指定范围的元素

    7)flatMapValues

    切分出每个元素

    8)foldByKey

    需求:根据key来拼接字符串

    9)foreach

    遍历元素

    10)keyBy

    以什么为key

    这里以元素的长度为key

    keys values

    拿到key 拿到value

  • 相关阅读:
    汉字乱码、加密后结果字符串不一致
    msgpack和TParams互相转换
    unigui监听会话开始和结束
    System.JSON.Builders.pas
    保证最终一致性的模式
    使用 Delta Sharing 协议进行数据共享
    dremio 16 升级问题
    graylog 4.0 运行
    supabase 开源firebase 可选工具
    cube.js 最新playground 说明
  • 原文地址:https://www.cnblogs.com/hidamowang/p/11059965.html
Copyright © 2011-2022 走看看