是否可以不下载而对Google bucket blob中的行进行计数?
我正在尝试从Google存储桶中读取csv
个文件,我需要一种无需下载即可统计其行数的方法。 google提供的API是否可能?
答案 0 :(得分:2)
否,这是不可能的。 Google Cloud Storage以可靠性和可用性为目标存储对象。 Google Cloud Storage不具备分析存储对象内容的处理能力。
您将需要读取对象才能计算行数。最有效的方法是在云中使用计算实例来最大化带宽性能。
Google Cloud提供了许多存储服务。其中一些提供处理能力作为服务的一部分。如果您的csv文件很大,BigQuery就是一个示例,它可以在几秒钟内分析数十亿行。
答案 1 :(得分:0)
您可以尝试以下方法计算对象的行数:
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import com.google.cloud.storage.Blob.BlobSourceOption;
public class CountObjectLines {
public static void main(String... args) throws Exception {
Storage storage = StorageOptions.getDefaultInstance().getService();
Blob blob = storage.get(BlobId.of("your-bucket", "your-file.csv"));
//This will get the content of the object
byte[] content = blob.getContent(BlobSourceOption.generationMatch());
String csvContent= new String(content);
//This will count the lines of the file
String[] lines = csvContent.split("\r\n");
System.out.println(lines.length);
}
}
希望有帮助。