gpt4 book ai didi

java - 在java中计算S3对象(文件夹)的大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:49 25 4
gpt4 key购买 nike

我将所有类型的文件存储在 Amazon S3 上。在 amazon S3 存储桶中,所有文件都存储在不同的文件夹中,我知道 amazon s3 中没有文件夹的概念。对象仅由它们的键标识。如果我使用“mydocs/personal/profile-pic.jpg”之类的 key 存储任何文件,这意味着将在那里创建两个父文件夹(mydocs 文件夹内的个人文件夹)。

我想计算 java 中任何文件夹(如“mydocs”)的大小。我使用下面给出的代码计算了桶的总大小:

public long calculateBucketSize(String bucketName) {
long totalSize = 0;
int totalItems = 0;
ObjectListing objects = listObjects(bucketName);
do {
for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) {
totalSize += objectSummary.getSize();
totalItems++;
}
objects = listNextBatchOfObjects(objects);
} while (objects.isTruncated());
System.out.println("Amazon S3 bucket: " + bucketName + " containing "
+ totalItems + " objects with a total size of " + totalSize
+ " bytes.");

return totalSize;
}

此方法将返回桶的总大小。我想计算任何单个文件夹的大小。任何帮助将不胜感激。

最佳答案

使用 org.apache.hadoop 库有一个简单的方法

  def calculateSize(path: String)(implicit spark: SparkSession): Long = {
val fsPath = new Path(path)
val fs = fsPath.getFileSystem(spark.sparkContext.hadoopConfiguration)
fs.getContentSummary(fsPath).getLength
}

该函数可以计算s3、hdfs和本地文件系统中的大小

关于java - 在java中计算S3对象(文件夹)的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15950032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com