我正在阅读一个创建40K分区的大型s3 json半结构化文件。 代码很简单,但是当我最终编写查询的结果集时,它还创建了大约40K的文件,大多数是0kb。
所以为了解决这个问题,我想到了创建一个结果集的新数据框,这解决了问题,因为从40K分区开始,我现在已经不到一百个。
reduced_partition_dataframe = spark.createDataFrame(original_df.collect(), original_df.schema)
但是,很少有result_set返回非常多的文件,导致收集器内存不足。所以我想如果达到某个记录计数阈值,我将拆分数据帧。
split_dataframe_array = original_df.randomSplit(split_weights)
但是,当我在某些点进行拆分时,拆分创建的架构现在与原始架构不同。
有没有办法保留架构或阻止df框架在拆分后重新推断架构?