我正在多節點環境(一個主節點和兩個從節點)上運行apache代碼,我在其中操作數據框,然後對其執行邏輯迴歸。在我之間也寫出臨時轉換的文件。我目睹了一個奇怪的觀察結果(是的,我已經進行了雙重檢查和三重檢查),我無法解釋並且想確認這是否可能是因爲我的代碼或可能存在其他因素。向HDFS寫入數據幀是否會影響其排序
我有一個像
一個數據幀DF
uid rank text
a 1 najn
b 2 dak
c 1 kksa
c 3 alkw
b 1 bdsj
c 2 asma
我用下面的代碼
sdf = df.orderBy("uid", "rank")
sdf.show()
uid rank text
a 1 najn
b 1 bdsj
b 2 dak
c 1 kksa
c 2 asma
c 3 alkw
排序並用寫的轉化DF到HDFS
sdf.repartition(1)
.write.format("com.databricks.spark.csv")
.option("header", "true")
.save("/someLocation")
現在,當我再次嘗試查看似乎數據已經失去了它的排序
sdf.show()
uid rank text
a 1 najn
c 2 asma
b 2 dak
c 1 kksa
c 3 alkw
b 1 bdsj
當我跳過寫代碼,它工作正常。
任何人都有任何指針,如果這可能是一個有效的情況下,我們可以做些事情來解決它。
P.s.我嘗試了各種各樣的編寫代碼,增加了分區數量,完全刪除了分區並將其保存爲其他格式。
「重新分配」將所有數據抹去並重新排序。否則,順序應該保存在像這樣的簡單輸出格式中。 – zero323