在spark数据框中为每个组将数据划分为相等数量的记录

时间:2019-02-05 07:56:17

标签: apache-spark apache-spark-sql

我们有1个月的数据,每天都有大小在10到100GB之间的数据。我们将以分区方式写入此数据集。在本例中,我们具有DATE参数,通过该参数将对数据帧中的数据进行分区(partition(“ DATE”))。并且我们还将重新分区应用于此数据框以创建单个或多个文件。如果我们重新分区为1,则为每个分区创建1个文件。如果设置为5,它将创建5个分区文件,效果很好。

但是我们要在这里尝试的是,要确保每个组(日期的分区数据)都使用相等大小的文件(通过多个记录或文件大小)创建。

我们使用了Spark数据框选项“ maxRecordsPerFile”,并将其设置为1000万条记录。这正在按预期方式工作。对于10天的数据,如果我一口气这样做,那会浪费执行时间,因为它正在收集所有10天的数据并尝试进行一些分配。

如果我未设置此参数,并且未将repartition设置为1,则此活动将在5分钟内完成,但是如果我只设置partition(“ DATE”)和maxRecrodsPerFile选项,则该操作将花费几乎小时。

期待对此有所帮助!

〜克里希(Krish)

0 个答案:

没有答案