Apache spark 如果emr上的spark中不存在bucket,如何防止创建bucket
我在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。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
是否有可能阻止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,部分原因是性能原因。