使用 s3a 連接器將資料幀寫入 S3 時,似乎沒有官方方法可以確定在該程序中寫入的 s3 上的物件路徑。我想要實作的只是確定在寫入 s3 時寫入了哪些物件(使用 pyspark 3.2.1 和 hadoop 3.3.2 和目錄提交程式)。
這可能有用的原因:
- partitionBy 可能會添加動態數量的新路徑
- spark創建它自己的“部分...”鑲木地板檔案,其名稱和編號取決于寫入時的磁區
使用 pyspark 3.1.2 和 Hadoop 3.2.0 曾經可以使用未官方支持的“_SUCCESS”檔案,該檔案寫入 S3 上第一次磁區之前的路徑,其中包含所有寫入檔案的所有路徑。然而,現在路徑的數量似乎被限制為 100,這不再是一個選擇。
真的沒有正式的、合理的方式來完成這項任務嗎?
uj5u.com熱心網友回復:
然而,現在路徑的數量似乎被限制為 100,這不再是一個選擇。
我們不得不在HADOOP-16570中削減它……這是在 10-100 TB terasorting 期間出現的規模問題之一。寫入 _SUCCESS 檔案的時間開始減慢作業提交時間。它只用于測驗。對不起。
它只是源代碼樹中的一個常量。如果您要提供補丁以使其可配置,我將很樂意審查和合并,前提是您遵循“說您運行了所有測驗的哪個 aws 端點,否則我們會忽略您的補丁”政策。
我不知道這些東西是在哪里收集的。火花驅動程式被告知每個任務提交的檔案數量及其總大小,但沒有按任務給出串列,而不是 AFAIK。
spark創建它自己的“部分...”鑲木地板檔案,其名稱和編號取決于寫入時的磁區
檔案名的 part-0001- 位來自任務 id;之后的位是創建的 uuid,以確保每個檔案名都是唯一的 - 請參閱SPARK-8406 將 UUID 添加到輸出檔案名以避免意外覆寫。你可以把它關掉
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447409.html
