我有一些分区的蜂巢表,它们指向镶木地板文件。现在,每个分区都有很多小木地板文件,每个文件的大小约为5kb,我想将这些小文件合并为每个分区一个大文件。我该如何实现以提高蜂巢性能? 我尝试将分区中的所有实木复合地板文件读取到pyspark数据帧,并将合并的数据帧重写到同一分区,然后删除旧的。但这出于某种原因对我来说似乎是效率低下或初学者的类型。这样做的利弊是什么? 而且,如果还有其他方法,请引导我以spark或pyspark来实现。
答案 0 :(得分:1)
您可以按分区读取全部数据repartition
,然后使用partitionBy
进行写入(这也是以后应保存的方式)。像这样:
spark\
.read\
.parquet('...'))\
.repartition('key1', 'key2',...)\
.write\
.partitionBy('key1', 'key2',...)\
.option('path', target_part)\
.saveAsTable('partitioned')