大数据学习之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

优质内容筛选与推荐>>
1、自己新添加的一些NSDate的分类方法
2、ECMA-262-3 深入解析.第四章. 作用域链
3、ABAP:Up/Download ABAP reports complete with texts
4、工作中的一点小技巧总结
5、JavaScript forEach方法


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号