簡體   English   中英

如何保存非空的火花數據框

[英]How to save spark dataframe that is not empty

我們正在保存一個數據框,但我們需要檢查該數據框不應為空。

為了實現這一點,我們使用df.isEmpty()這是保存 DF 時非常常見的做法。

我擔心的是 df.isEmpty、head(1)、limit(1) 所有這些都執行了一個Action ,它將第一次執行整個計划,然后當我們保存它時將第二次再次觸發(執行)該計划. 這不是很糟糕,有沒有更好的方法來做到這一點?

在大多數代碼示例中,我遇到的博客這是保存非空數據幀的常用方法 檢查空(觸發動作並執行計划),然后保存(觸發動作並再次執行整個計划)

我不會使用 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

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM