Spark Partition

本文介绍了Spark中Partition的基本概念,作为计算的最小单元,Partition的数量直接影响计算性能。内容涵盖数据源创建时Partition的确定,通过计算生成Partition的方式,特别是Key-based Transformation的影响,以及如何自定义Partition数量以优化性能。讨论了通过API观察和调整Partition分布以避免数据倾斜和资源浪费的重要性。
摘要由CSDN通过智能技术生成

partition是spark rdd计算的最小单元。为什么是最小单元?先从分布式说起,分布式计算的特点就是批处理,将大量的数据分成若干批次,使得利用廉价机器搭建的集群也可以完成海量数据的计算。大量的数据分散在集群中的若干节点上,每个节点上的那部分数据,在执行计算的时候,又可以切分成若干份,每一份就是一个批次,也就是一个partition。

spark计算的性能与partition的数量有很大的关系。每个task处理一个partition。如果partition的数量小于集群可用的CPU核数,就不能充分利用并行计算的性能,还可能引发数据倾斜的问题。但是partition的数量远大于集群可用CPU核数的时候,又可能导致资源分配的时间超过任务实际执行的时间。那么partition的数量又是由什么决定的呢?

备注: 这里提到的相关API及代码都是基于PySpark

一、数据源

rdd如果是从某些数据源创建的,则partition的数量与这些数据源有直接关系。下文的sc指SparkContext实例, spark指的是SparkSession实例。

从内存中创建

sc.parallelize(...)

这种方式创建的partition数量等于SparkContext的defaultParallelism的值,或者等于传给parallelize的numSlices参数。

读取HDFS文件创建

包括使用sc.textFile(...)spark.sql(...)查询Hive表得到的结果的part

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值