![](/img/trans.png)
[英]How can I create new rows to the existing DataFrame? in PySpark or Scala
[英]Create a range of dates in a pyspark DataFrame
我有以下抽象DataFrame(我原來的DF有600億行+)
Id Date Val1 Val2
1 2021-02-01 10 2
1 2021-02-05 8 4
2 2021-02-03 2 0
1 2021-02-07 12 5
2 2021-02-05 1 3
我的預期輸出是:
Id Date Val1 Val2
1 2021-02-01 10 2
1 2021-02-02 10 2
1 2021-02-03 10 2
1 2021-02-04 10 2
1 2021-02-05 8 4
1 2021-02-06 8 4
1 2021-02-07 12 5
2 2021-02-03 2 0
2 2021-02-04 2 0
2 2021-02-05 1 3
基本上,我需要的是:如果Val1
或Val2
在一段時間內發生變化,則這兩個日期之間的所有值都必須具有前一個日期的值。 (為了更清楚,請看 ID 2)。
我知道我可以通過多種方式做到這一點(窗口 function,udf,...)但我的疑問是,由於我的原始 DF 有超過 600 億行,進行此處理的最佳方法是什么?
我認為最好的方法(性能方面)是執行內部連接(可能使用廣播)。 如果你擔心記錄的數量,我建議你按批次運行它們(可以是記錄的數量,或者按日期,甚至是一個隨機數)。 一般的想法只是為了避免一次運行所有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.