在GCS存储桶上读取文件行数的有效方法

时间:2020-03-12 15:46:19

标签: java python linux google-cloud-storage

我正在尝试使用Java Storage Client从远程服务器读取文件行数

还尝试了“ gsutil cat gs:// {bucket_name} /file.txt | wc -l”

还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

不幸的是,无法使用Google Storage API来获取存储在存储桶中的对象数。最接近的方法是将BucketListOptionpageSize = Long.MAX_VALUEhere's方法)结合使用。

但是,通过命令行,您可以执行以下命令:

gsutil ls gs://bucket/** | wc -l

这将为您提供所需的计数。

答案 1 :(得分:0)

GCS 不提供计算对象中行数的内置方法。从根本上说,您将需要扫描文件以计算行数。在某些情况下,可能有比您在问题中建议的方式更好的方法:

  • 您可以在 object metadata 中保存行数。这意味着您只需要进行一次计数,并且可以从元数据中检索它。如果您控制上传过程,您甚至可以在上传时执行此操作,这样您无需检索行即可获得计数。

  • 您可以编写一个小的 Google Cloud Function 端点来执行此操作。这样做的优点是数据永远不会离开 GCP(如果设置正确,永远不会离开区域),因此速度更快,出口成本更低。