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