我们有1个月的数据,每天都有大小在10到100GB之间的数据。我们将以分区方式写入此数据集。在本例中,我们具有DATE参数,通过该参数将对数据帧中的数据进行分区(partition(“ DATE”))。并且我们还将重新分区应用于此数据框以创建单个或多个文件。如果我们重新分区为1,则为每个分区创建1个文件。如果设置为5,它将创建5个分区文件,效果很好。
但是我们要在这里尝试的是,要确保每个组(日期的分区数据)都使用相等大小的文件(通过多个记录或文件大小)创建。
我们使用了Spark数据框选项“ maxRecordsPerFile”,并将其设置为1000万条记录。这正在按预期方式工作。对于10天的数据,如果我一口气这样做,那会浪费执行时间,因为它正在收集所有10天的数据并尝试进行一些分配。
如果我未设置此参数,并且未将repartition设置为1,则此活动将在5分钟内完成,但是如果我只设置partition(“ DATE”)和maxRecrodsPerFile选项,则该操作将花费几乎小时。
期待对此有所帮助!
〜克里希(Krish)