如何序列化PySpark GroupedData对象



我正在一个有数百万条记录的数据集上运行groupBy(),并希望保存结果输出(PySpark GroupedData对象),以便以后可以对其进行反序列化并从那时开始继续(根据需要在其上运行聚合)。

df.groupBy("geo_city")
<pyspark.sql.group.GroupedData at 0x10503c5d0>

我希望避免将GroupedData对象转换为DataFrames或RDD,以便将其保存为文本文件或Parquet/Avro格式(因为转换操作很昂贵)。有没有其他有效的方法可以将GroupedData对象存储为某种二进制格式,以实现更快的读/写?可能相当于《星火》中的泡菜?

没有,因为GroupedData并不是一个真正的东西。它根本不对数据执行任何操作。它只描述了当您对后续agg的结果执行操作时,实际聚合应该如何进行。

您可能会序列化底层JVM对象并稍后恢复它,但这是浪费时间。由于groupBy只描述了必须执行的操作,因此从头开始重新创建GroupedData对象的成本应该可以忽略不计。

最新更新