Spark分区是一种将数据分割到多个分区的方法,这样您就可以并行地在多个分区上执行转换,从而更快地完成作业。还可以将已分区的数据写入文件系统(多个子目录),以便下游系统更快地读取数据。
Spark有几种分区方法来实现并行性,可以根据需要选择使用哪种分区方法。
PARTITIONING METHODS (SCALA) | 说明 | 提供类 |
---|---|---|
repartition(numPartitions: Int) | Uses RoundRobinPartitioning | DataFrame |
repartition(partitionExprs: Column*) | Uses HashPartitioner | DataFrame |
repartition(numPartitions: Int, partitionExprs: Column*) | partition = hash(partitionExprs) % numPartitions | DataFrame |
coalesce(numPartitions: Int) | Use only to reduce the number of partitions. | DataFrame |
repartitionByRange(partitionExprs : Column*) | Uses rangepartitioning. Ideal to use on numeric columns. | DataFrame |
repartitionByRange(numPartitions: Int, partitionExprs: Column*) | DataFrame | |
partitionBy(colNames: String*) | Use to write the data into sub-folder | DataFrameWriter |
spark sql repartition by column
Spark SQL是Apache Spark的一部分,提供了一种使用SQL语言的方式来处理大数据。
在Spark SQL中,“repartition by column” 是指根据某个列对数据进行重新分区。它可以帮助您通过控制分区键来改善作业的性能。
要重新分区,请使用如下代码:
df.repartition(col(“column_name”))
其中,“df” 是您要重新分区的数据框,“column_name” 是您想要作为分区键的列的名称。
重新分区可以提高分布式作业的性能,因为它可以帮助更好地利用集群中的资源。但同时也要注意,不适度的重新分区可能导致性能下降,因此需要适当的平衡。
参考:
https://juejin.cn/s/spark%20sql%20repartition%20by%20column
https://blog.youkuaiyun.com/penriver/article/details/116229560