簡體   English   中英

Hadoop S3A 文件系統,中止 object 上傳?

[英]Hadoop S3A filesystem, abort object upload?

我有類似的代碼

ParquetWriter<Record> writer = getParquetWriter("s3a://my_bucket/my_object_path.snappy.parquet");
for (Record r : someIterable) {
   validate(r);
   writer.write()
}
writer.close();

如果validate拋出異常,我想釋放與 writer 關聯的所有資源。 但在這種情況下,我不想在 S3 中創建任何對象。 這是可以實現的嗎?

如果我關閉編寫器,它將結束 s3 分段上傳並在雲中創建 object。 如果我不關閉它,到目前為止寫入的部分將保留在磁盤緩沖區中,從而阻塞工作。

是的,這是一個問題。 它已在HADOOP-16906中進行了討論,為流等添加了一些 Abortable.abort() 接口,這些接口可以被終止

這里的問題是添加到S3ABlockOutputStream class 是不夠的,我們需要通過 FSDataOutputStream 等傳遞它,在 FS API 中指定它,如果傳遞不起作用,則定義語義,承諾維護它等等。很多的努力。 但是,如果您確實想這樣做,歡迎使用補丁...

關注HDFS-13934 ,分段上傳API。 這將讓您進行上傳,然后提交/中止它。 不太適合您的工作流程。

恐怕您將不得不上傳 go。 請記住為存儲桶設置生命周期規則以刪除舊上傳,並查看hadoop s3guard uploads命令來列出/中止它們。

暫無
暫無

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

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