通过AWS EMR检查AWS S3中是否存在文件夹的正确方法?

时间:2019-04-09 16:01:02

标签: amazon-web-services apache-spark amazon-s3 amazon-emr

在重复之前,请先阅读我的问题。

我发现了两种检查E3的S3 中是否存在文件夹的方法,但是我想知道哪种方法正确。为了获得EMR(例如来自Spark应用程序)机器的凭据以访问S3,我做了:new InstanceProfileCredentialsProvider().getCredentials

  1. 使用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
  2. 同时,这是我的解决方法: s3.get.listObjectsV2(s3_bucket, s3_object).getKeyCount > 0。您不需要获取所有与该请求匹配的结果,而只需获取第一个窗口(检查它是否为空)即可。

为什么当(2)返回true时(1)返回false?您建议哪种解决方案?

1 个答案:

答案 0 :(得分:1)

就目前而言,我建议坚持使用2或升级库版本。当您使用EMR堆栈时,可能无法避免冲突。

以前有issues个与doesObjectExist相关的报道。