gpt4 book ai didi

scala - 如何保存不为空的Spark数据框

转载 作者:行者123 更新时间:2023-12-02 19:54:27 26 4
gpt4 key购买 nike

我们正在保存一个数据框,但是我们需要检查该数据框不应为空。

为此,我们使用了df.isEmpty(),这是保存DF时非常普遍的做法。

我担心的是df.isEmpty,head(1),limit(1)都执行操作,它将第一次执行整个计划,然后当我们保存时,它将触发(执行)计划再次第二次。这不是很糟糕吗,有没有更好的方法呢?

在大多数代码示例中,我遇到的博客是保存非空数据框的常用方法:先检查是否为空(触发操作并执行计划),然后再保存(触发操作并再次执行整个计划)

最佳答案

我不会使用df.rdd.isEmpty。这种方法将数据帧转换为rdd,而后者可能没有利用底层的优化器(催化剂优化器)并减慢了处理速度。

使用count(),但请确保保留您的数据,以避免不必要的计划执行。

dataframe.persist() // persist data in order to avoid redundant executions
if (dataframe.count() > 0) // first action. triggers plan
dataframe
.write
.mode("overwrite")
.format("desired.format")
.save("foo/bar") // second action. due to previous persis(), plan will not be triggered
dataframe.unpersist() // unpersist it, data is no longer needed

希望能帮助到你

关于scala - 如何保存不为空的Spark数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59547894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com