我正在使用withColumn和窗口操作(使用Python/Spark)构建许多新列。这导致了一个大的血统,这减慢了操作。实际上,每隔几步将DataFrame持久化到磁盘非常有帮助。
但是,如何方便地将DataFrame缓存在内存中并强制物化,从而减少沿袭呢?
(我见过关于count的建议,但我的印象是只适用于RDDs?)
发布于 2017-02-14 09:46:14
首先,计数也适用于dataframe。任何包含整个数据帧的操作都足够了(计数遍历所有记录,因此将实现整个数据)。
第二,需要注意的是,缓存不会减少血统。整个谱系将作为代码生成的一部分进行分析和优化。唯一的区别是,可能会跳过许多步骤,因为将使用缓存中已经物化的数据(BTW,这并不总是正确的,在某些情况下,优化器可能决定根据其内部启发式重新计算)。
有两种方法可以减少数据文件的谱系。
https://stackoverflow.com/questions/42222409
复制相似问题