有没有办法通过存储在 Google Cloud Storage 中的文本文档进行 grep?

Posted

技术标签:

【中文标题】有没有办法通过存储在 Google Cloud Storage 中的文本文档进行 grep?【英文标题】:Is there a way to grep through text documents stored in Google Cloud Storage? 【发布时间】:2019-07-26 10:13:21 【问题描述】:

问题

有没有办法通过 grep 浏览存储在 Google Cloud Storage 中的文本文档?

背景

我在 VM 上存储了超过 10,000 个文档(txt 文件)并且正在使用空间。在达到限制之前,我想将文档移动到另一个位置。 目前,我正在考虑迁移到 GCP 上的 Google Cloud Storage。

问题

我有时需要使用特定关键字对文档进行 grep。 我想知道是否有任何方法可以通过 Google Cloud Storage 上传的文档进行 grep? 我检查了 gsutil 文档,但似乎支持 ls,cp,mv,rm 但我没有看到 grep。

【问题讨论】:

【参考方案1】:

很遗憾,gsutil 没有像 grep 这样的命令。

唯一相似的命令是gsutil cat

我建议你可以创建一个小vm,云端grep会更快更便宜。

gsutil cat gs://bucket/ | grep "what you wnat to grep"

【讨论】:

感谢您的回复。我试过gsutil cat,如果我在谷歌云存储(GCP)上没有太多文件,它就可以工作。虽然,在考虑可扩展性时,gsutil cat 绝对不是最好的。让我按照建议检查小型虚拟机上 grep 的性能。再次感谢!!!【参考方案2】:

@howie answer 很好。我只想提一下,谷歌云存储是一个旨在存储文件的产品,并不关心文件的内容。此外,它被设计为可大规模扩展,并且您要求的操作计算量很大,因此未来不太可能原生支持。

在您的情况下,我会考虑创建文本文件和trigger an update for it every time a new file is upload to GCS 的索引。

【讨论】:

感谢您的建议。我终于选择了 gcpfuse。【参考方案3】:

我还有一个建议。您可能需要考虑使用 Google Dataflow 来处理文档。您可以只移动它们,但更重要的是,您可以使用 Dataflow 转换文档。

【讨论】:

感谢您的建议。我终于选择了 gcpfuse。【参考方案4】:

我找到了这个问题的答案。 gcpfuse 解决了这个问题。

将谷歌云存储挂载到特定目录。 你可以从那里 grep。

https://cloud.google.com/storage/docs/gcs-fuse https://github.com/GoogleCloudPlatform/gcsfuse

【讨论】:

【参考方案5】:

我已经编写了一个 Linux 本机二进制文件 [mrgrep](适用于 ubuntu 18.04)(https://github.com/romange/gaia/releases/tag/v0.1.0),它正是这样做的。它直接从 GCS 读取数据,作为奖励,它可以处理压缩文件并且是多线程的。

【讨论】:

以上是关于有没有办法通过存储在 Google Cloud Storage 中的文本文档进行 grep?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以删除命名空间中的所有Google Cloud Datastore Kinds?

Google Cloud App Engine 文件存储备份

Google Cloud Messaging - 有没有办法查看所有已发送(或排队)通知的列表?

在 Google Cloud Datastore 与 Google Cloud Bigtable 中存储用户事件历史记录

Google Cloud Functions 无法使用 Pub/Sub 死信主题

Google Cloud Platform:无法通过API在Storage中上传新文件版本