repartition和partitionBy的区别

本文详细介绍了Spark中repartition和partitionBy的区别。repartition用于调整数据在内存中的分区数,可以增加或减少分区,而partitionBy是在写入磁盘时根据指定列创建分区目录。repartition可能导致数据shuffle,而coalesce在减少分区时可避免shuffle。使用partitionBy时,相同列值的数据会被写入同一分区。结合两者使用,可以控制内存分区数并按列值进行磁盘分区,但需注意数据倾斜问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

旁边的实习生一脸困惑:我把一个dataset的数据往某个文件夹或hive表中写的时候可以用partitionBy对数据进行分区,可是repartition顾名思义也好像与分区有关,这两个究竟有啥区别?我该如何使用?

API解释

  1. repartition
    repartition是dataframe的一个方法,用来增加或减少内存中的分区;当需要将dataframe写入磁盘的时候,它会将所有part files文件写入指定的一个目录中。
  2. partitionBy
    partitionBy是DataFrameWriter类的一个方法,用于将DataFrame写入磁盘中的分区目录里,分区列中每个唯一值对应一个分区子目录
    在这里插入图片描述

详细案例讲解

测试数据:

country
China
China
China
America
America
England
England
Japan
Japan
Japan
Korea
Korea
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyRivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值