使用Java计算Google存储桶中的文件行

时间:2018-10-25 08:08:49

标签: java csv google-cloud-platform google-cloud-storage bucket

是否可以不下载而对Google bucket blob中的行进行计数? 我正在尝试从Google存储桶中读取csv个文件,我需要一种无需下载即可统计其行数的方法。 google提供的API是否可能?

2 个答案:

答案 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);
  }
}

希望有帮助。