如何序列化PySpark GroupedData对象?

时间:2016-07-26 22:31:59

标签: python apache-spark pyspark apache-spark-sql pyspark-sql

我在拥有数百万条记录的数据集上运行groupBy(),并希望保存结果输出(PySpark GroupedData对象),以便我可以在以后对其进行反序列化并从中恢复point(根据需要在其上运行聚合)。

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

我想避免将GroupedData对象转换为DataFrames或RDD,以便将其保存为文本文件或Parquet / Avro格式(因为转换操作很昂贵)。是否有其他有效的方法将GroupedData对象存储为某种二进制格式以便更快地读/写?可能有些相当于Spark的泡菜?

1 个答案:

答案 0 :(得分:2)

没有,因为GroupedData不是真的。它根本不对数据执行任何操作。它仅描述了对后续agg的结果执行操作时应如何进行实际聚合。

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