我有一个在 AWS EMR 上运行的 map-reduce 应用程序,它将一些输出写入不同的(aws 帐户)s3 存储桶。我有权限设置并且作业可以写入外部存储桶,但所有者仍然root来自运行 Hadoop 作业的帐户。我想将其更改为拥有存储桶的外部帐户。
我发现我可以设置fs.s3a.acl.default为bucket-owner-full-control,但这似乎不起作用。这就是我正在做的:
conf.set("fs.s3a.acl.default", "bucket-owner-full-control");
FileSystem fileSystem = FileSystem.get(URI.create(s3Path), conf);
FSDataOutputStream fsDataOutputStream = fileSystem.create(new Path(filePath));
PrintWriter writer = new PrintWriter(fsDataOutputStream);
writer.write(contentAsString);
writer.close();
fsDataOutputStream.close();
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
我正在尝试对中的getPrice每个方法进行并行调用。我有这段代码并验证了 getPrice 正在单独的线程中运行,但它们是按顺序运行的,而不是并行运行的。谁能指出我在这里缺少什么吗?productproducts
非常感谢你的帮助。
ExecutorService service = Executors.newFixedThreadPool(THREAD_POOL_SIZE);
Set<Product> decoratedProductSet = products.stream()
.map(product -> CompletableFuture
.supplyAsync(() -> getPrice(product.getId(), date, context), service))
.map(t -> t.exceptionally(throwable -> null))
.map(t -> t.join())
.collect(Collectors.<Product>toSet());
Run Code Online (Sandbox Code Playgroud) AWS S3 Inventory 文档称该报告包含相应的元数据
...列出您的对象及其相应的元数据...
但是,我没有看到转储 csv 文件中导出任何对象元数据。我向 S3 存储桶 (x-amz-meta) 中的对象添加了一些自定义元数据。
我是否必须在某处启用某些选项才能获取报告中的元数据?还是我理解错了?