我们有两个数据帧df1
和df2
并且正在对df2执行转换。在df2完成所有转换之后,我们需要在df2中追加df1。为此,我们使用unionAll函数。DAG调度程序在使用unionALL时重复处理阶段
val v_asciiFileWithHeader = v_header.unionAll(vr_dataframeAsciiFile)
但unionAll
后,当我们打印了它的DAG,其重复所有的处理阶段又由于其所有的处理完成两次当一个动作被调用。
如果我们在应用unionAll
之前坚持df2,那么所有的处理阶段都不会重复。
作为参考,已附着在DAG为数据帧unionAll
前,后UnionAll(without persisting df2)
,后unionAll(with persisting df2)
当上是非持久的数据帧被施加unionAll
重复那么,为什么处理阶段。
火花版本 - 1.6.1 斯卡拉版 - 2.10.6
处理部分'df2'是否包含任何操作或仅包含转换? – code
@code之前它只有转换。但为了坚持,我们添加了一个动作,即df2.count –
此前还有df2转换被执行了两次? – code