Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如果emr上的spark中不存在bucket,如何防止创建bucket_Apache Spark_Amazon S3_Amazon Emr_Hadoop Partitioning - Fatal编程技术网

Apache spark 如果emr上的spark中不存在bucket,如何防止创建bucket

Apache spark 如果emr上的spark中不存在bucket,如何防止创建bucket,apache-spark,amazon-s3,amazon-emr,hadoop-partitioning,Apache Spark,Amazon S3,Amazon Emr,Hadoop Partitioning,我在emr集群上运行spark step。它收集所有小文件,并将它们累积到一个大文件中。 所以我收到了要处理的bucket列表,但在处理bucket之前,我想检查bucket是否存在,以及它是否包含任何文件。为此,我使用hadoop文件系统 String bucketPath = "s3n://" + bucketName; Configuration hadoopConfiguration = sparkSession.sparkContext().hadoopCon

我在emr集群上运行spark step。它收集所有小文件,并将它们累积到一个大文件中。 所以我收到了要处理的bucket列表,但在处理bucket之前,我想检查bucket是否存在,以及它是否包含任何文件。为此,我使用hadoop文件系统

String bucketPath = "s3n://" + bucketName; Configuration hadoopConfiguration = sparkSession.sparkContext().hadoopConfiguration(); FileSystem.get(new URI(bucketPath), hadoopConfiguration); 字符串bucketPath=“s3n://”+bucketName; 配置Hadoop配置= sparkSession.sparkContext().hadoopConfiguration(); get(新URI(bucketPath)、Hadoop配置); 但是这里的问题是,FileSystem.get(…)如果不存在,就会创建一个bucket。
是否有可能阻止bucket创建?或者有人知道如何以其他方式检查是否存在?

另一种方法是在与您的EMR作业流关联的IAM角色中禁用bucket创建。顺便说一句,这通常是个好主意

IAM策略拒绝创建bucket的示例:

      {
         "Effect":"Deny",
         "Action":[
            "s3:CreateBucket",
            "s3:DeleteBucket"
         ],
         "Resource":"arn:aws:s3:::examplebucket"
      },

有关更多信息,您可以查看

禁用此功能的最佳方法是使用“fs.s3.bucket.create.enabled”hadoop配置。在不久的将来,新版本的emr将禁用此功能,以防止意外创建s3存储桶并提高启动性能。

谢谢Andrew,您的解决方案工作得非常完美!但我还有一个问题:)当你写关于功能将被禁用时-你是说这个属性将被删除还是默认情况下不会创建bucket?默认情况下,它会被切换为关闭,部分原因是意外创建bucket,部分原因是性能原因。