【问题标题】:Hadoop S3A filesystem, abort object upload?Hadoop S3A 文件系统,中止对象上传?
【发布时间】:2020-10-10 15:52:30
【问题描述】:

我有类似的代码

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

如果validate 抛出异常,我想释放与作者相关的所有资源。但在这种情况下,我不想在 S3 中创建任何对象。这可以实现吗?

如果我关闭编写器,它将结束 s3 分段上传并在云中创建一个对象。如果我不关闭它,到目前为止写入的部分将保留在磁盘缓冲区中,从而阻塞工作。

【问题讨论】:

    标签: java hadoop amazon-s3 parquet parquet-mr


    【解决方案1】:

    是的,这是一个问题。它已在HADOOP-16906 中讨论过为流等添加一些 Abortable.abort() 接口,这些接口可以终止

    这里的问题是添加到 S3ABlockOutputStream 类是不够的,我们需要通过 FSDataOutputStream 等传递它,在 FS API 中指定它,如果传递不起作用,定义语义,承诺维护它等等。很多努力。如果您确实想这样做,欢迎使用补丁...

    关注HDFS-13934,分段上传 API。这将让您进行上传,然后提交/中止它。不太适合您的工作流程。

    担心您将不得不进行上传。请记住为存储桶设置生命周期规则以删除旧上传,并查看hadoop s3guard uploads 命令来列出/中止它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 2015-06-13
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      相关资源
      最近更新 更多