如何将小型实木复合地板文件合并为一个大型实木复合地板文件?

时间:2018-08-16 09:51:41

标签: apache-spark hive pyspark parquet

我有一些分区的蜂巢表,它们指向镶木地板文件。现在,每个分区都有很多小木地板文件,每个文件的大小约为5kb,我想将这些小文件合并为每个分区一个大文件。我该如何实现以提高蜂巢性能? 我尝试将分区中的所有实木复合地板文件读取到pyspark数据帧,并将合并的数据帧重写到同一分区,然后删除旧的。但这出于某种原因对我来说似乎是效率低下或初学者的类型。这样做的利弊是什么? 而且,如果还有其他方法,请引导我以spark或pyspark来实现。

1 个答案:

答案 0 :(得分:1)

您可以按分区读取全部数据repartition,然后使用partitionBy进行写入(这也是以后应保存的方式)。像这样:

spark\
    .read\
    .parquet('...'))\
    .repartition('key1', 'key2',...)\
    .write\
    .partitionBy('key1', 'key2',...)\
    .option('path', target_part)\
    .saveAsTable('partitioned')