2016-07-26 88 views
1

我运行在具有几百万的记录的数据集groupBy()并要保存生成的输出(pyspark GroupedData对象),这样我可以在以后反序列化,并从该点恢复(最重要的是为运行汇总需要)。如何序列化pyspark GroupedData对象?

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

我想避免GroupedData对象转换为DataFrames或RDDS以便将其保存到文本文件或镶木/阿夫罗格式(如转换操作是昂贵的)。有没有其他有效的方法将GroupedData对象存储为某种二进制格式以便更快地读取/写入?可能在Spark中有一些相当于泡菜?

回答

2

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

你也许序列垫层JVM对象,并在以后恢复它,但它是在浪费时间。由于groupBy只描述了必须做的事情,重新创建对象的成本应该可以忽略不计。