首页 文章

如何序列化pyspark GroupedData对象?

提问于
浏览
1

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

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

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

1 回答

  • 2

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

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

相关问题