[英]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.