在重复之前,请先阅读我的问题。
我发现了两种检查E3的S3 中是否存在文件夹的方法,但是我想知道哪种方法正确。为了获得EMR(例如来自Spark应用程序)机器的凭据以访问S3,我做了:new InstanceProfileCredentialsProvider().getCredentials
。
使用AmazonS3.doesObjectExist(s3Bucket, s3Prefix)
s3.doesObjectExist("my-bucket", "my-directory")
返回false,但它为true s3.doesObjectExist("my-bucket", "my-directory/")
返回true s3.doesObjectExist("my-bucket", "my-directory2")
返回false,但它为true s3.doesObjectExist("my-bucket", "my-directory2/")
返回false,但它为true 同时,这是我的解决方法:
s3.get.listObjectsV2(s3_bucket, s3_object).getKeyCount > 0
。您不需要获取所有与该请求匹配的结果,而只需获取第一个窗口(检查它是否为空)即可。
为什么当(2)返回true时(1)返回false?您建议哪种解决方案?