美文网首页
RDD Partition/Partitioner

RDD Partition/Partitioner

作者: GakkiLove | 来源:发表于2018-06-22 22:17 被阅读0次

    RDD是由若干个partition构成的,一份待处理的原始数据会被按照相应的逻辑切分成n份,每份数据对应到RDD中的一个Partition,Partition的数量决定了task的数量,影响着程序的并行度,所以理解Partition是了解spark背后运行原理的第一步。

    RDD的生成方式共有三种:

    1. 从Scala集合中创建,通过调用sc.makeRDD()和sc.parallelize()生成
    2. 加载外部数据来创建RDD,调用sc.textFile()方法
    3. 由其他RDD执行transform操作转换而来

    一般来说,加载Scala集合或者外部数据创建RDD的时候可以指定partition个数

    决定RDD的每一条消息应该分到哪一个分区的就是Partitioner,只有<key,value>形式的RDD才有Partitioner

    Partitioner主要有两种,分别是Hash Partititoner(默认)和Range Partititoner.

    使用Partitioner必须满足两个前提:1.rdd必须是<key,value>形式 2.发生shuffle操作

    data skew(数据倾斜):由于hash计算出的key值对应的数据量大小不同导致的,解决办法是通过自定义partitioner来解决

    相关文章

      网友评论

          本文标题:RDD Partition/Partitioner

          本文链接:https://www.haomeiwen.com/subject/dqylyftx.html