我有一个216GB的输入数据(超过3000个.gz文件)。我必须将此数据存储到分区的配置单元表中。分区是通过X列完成的。有40个不同的X列。我希望每个分区有一个文件。因此,用以下代码加载配置单元表。
df.repartition(df.col("X")).write.partitionBy("X").parquet("/path/to/table")
这导致OOM异常。
对于大小为293GB(单个csv文件)和187个不同的X列的数据,相同的代码也可以正常工作。
任何人都可以帮助我了解这里发生的事情吗?
列X的单个值的记录数量在两者之间完全不同。例如,在第一种情况下,X的单个值为4000万条记录,在第二种情况下为500万条。
我能确切找到在什么时候会引发OOM异常吗?