【问题标题】:Google Cloud Dataflow - From PubSub to ParquetGoogle Cloud Dataflow - 从 PubSub 到 Parquet
【发布时间】:2020-07-22 17:22:38
【问题描述】:

我正在尝试使用 Google Cloud Dataflow 将 Google PubSub 消息写入 Google Cloud Storage。 PubSub 消息采用 json 格式,我想要执行的唯一操作是从 json 转换为 parquet 文件。

在官方文档中,我找到了 google 提供的模板,该模板从 Pub/Sub 主题中读取数据并将 Avro 文件写入指定的 Cloud Storage 存储桶 (https://cloud.google.com/dataflow/docs/guides/templates/provided-streaming#pubsub-to-cloud-storage-avro)。问题是模板源代码是用Java编写的,而我更喜欢使用Python SDK。

这些是我对 Dataflow 和 Beam 进行的第一次测试,网上并没有很多资料可供参考。任何建议、链接、指导、代码片段将不胜感激。

【问题讨论】:

  • 既然您正在寻找一般建议,我可以告诉您,Apache Beam 中有一个名为 WriteToParquet() 的 PTtransform 方法,它用于写入 Parquet,link。此外,Google 提供了这段代码,它展示了如何写入 GCS 读取 PubSub,here。因此,您可以读取您的消息,然后写入 parquet 文件(提供架构),最后将其存储在 GCS 中。对你有帮助吗?
  • 是的,非常感谢@AlexandreMoraes!我见过名为 WriteToParquet() 的 PTtransform 方法,但我正在寻找他们使用它的示例。您发送给我的代码链接是一个很好的起点!
  • @fedex Here 这应该是您使用 WriteToParquet() 方法的良好开端。当您继续编写代码时,您可以发布其他问题并获得更具体的帮助。同时,我能否总结一下我分享的这些信息作为答案,以便进一步为社区做出贡献?
  • @AlexandreMoraes 是的,当然,它当然可以帮助任何其他从事类似用例的人。

标签: python google-cloud-platform google-cloud-dataflow apache-beam


【解决方案1】:

为了进一步为社区做出贡献,我将我们的讨论总结为答案。

既然您是从 Dataflow 开始的,我可以指出一些有用的主题和建议:

  1. Apache Beam 中的 PTransform WriteToParquet() 内置方法非常有用。它从 PCollection 的记录中写入 Parquet 文件。此外,为了使用它并写入 parquet 文件,您需要按照文档中的说明指定架构。另外,这个article将帮助您更好地了解如何使用此方法以及如何将其写入Google Cloud Storage(GCS)存储桶中。

  2. Google 提供this code 解释如何从 PubSub 读取消息并将它们写入 Google Cloud Storage。此 QuickStart 从 PubSub 读取消息并将消息从每个窗口写入存储桶。

  3. 由于您想从 PubSub 读取,将消息写入 Parquet 并将文件存储在 GCS 存储桶中,我建议您将以下过程作为管道的步骤:读取您的消息,写入parquet 文件并将其存储在 GCS 中。

我鼓励您阅读以上链接。然后,如果您有任何其他问题,您可以发布另一个主题以获得更具体的帮助。

【讨论】:

  • @fedex 我已经发布了答案,如果您能接受并投票赞成答案,我将不胜感激。
  • @FedericoBarusco 您是否能够对 parquet 文件运行 pub/sub 订阅以进行流式传输作业?我在把东西写到镶木地板上时遇到了一些问题
猜你喜欢
  • 2020-04-05
  • 2015-12-14
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 2022-12-20
  • 2019-03-25
  • 1970-01-01
  • 2019-09-26
相关资源
最近更新 更多