如何在Spark中每列重新划分为固定数量的分区



我需要从一个配置单元表中读取数据,并将其插入另一个配置单位表中。两个表的架构是相同的。该表按日期进行分区;国每个分区的大小约为500MB。我想把这些数据插入一个新的表中,其中每个分区内的文件大约是128MB(即4个文件(

步骤1:从Spark中的源表中读取数据。

步骤2:按列(国家/地区、日期(重新分区,分区数为4。

df.repartition(4, col("country_code"), col("record_date"))

我每个country_code&record_date。

无论您在步骤2中做什么,都会将数据重新分区到内存中的4个分区,但如果您执行df.write.,则不会保存4个文件

为了做到这一点,你可以使用以下代码:

df.repartition(4, col("country_code"),col("record_date"))
.write
.partitionBy(col("country_code"),col("record_date"))
.mode(SaveMode.Append).saveAsTable("TableName")

最新更新