【问题标题】:Google Cloud Platform: Pub/Sub to Bigtable谷歌云平台:发布/订阅到 Bigtable
【发布时间】:2018-01-31 13:04:04
【问题描述】:

我正在使用 Python 在 Google Cloud Platform 上构建管道。我在 Cloud Pub/Sub 中有我的数据。我想使用 Dataflow 将其存储到 Bigtable 中。到目前为止,我有一些在 Java 中从 Pub/Sub 流式传输数据到 Bigtable 的示例。

谁能帮我提供一些有关如何使用 Python 中的 Dataflow 将我的数据从 Pub/Sub 流式传输到 Bigtable 的资源或链接?

【问题讨论】:

    标签: python google-cloud-platform google-cloud-dataflow google-cloud-pubsub google-cloud-bigtable


    【解决方案1】:

    山姆, 我不确定我们如何在 Python 中做到这一点。但我已经在 J​​ava 中做到了这一点。希望这个想法可以帮助您解决问题。

    执行此操作时应牢记的步骤是

    1. 从 Pub/Sub 读取,将流设置为 true

      PubsubIO.readStrings().fromTopic(PUBSUB_SUBSCRIPTION))
      
    2. 使用常量键对集合进行分组

      PCollection<KV<String, String>> keyedStream = streamData
              .apply(WithKeys.of(new SerializableFunction<String, String>() {
                  /**
                   * serial version id
                   */
                  private static final long serialVersionUID = 1L;
      
                  public String apply(String s) {
                      return CONSTANT_KEY;
                  }
              }));
      
    3. 创建了一个转换,用于将PCollection 中的元素划分为窗口,并在输出这些元素时触发控件。

      Window.<String>into(new GlobalWindows())
              .triggering(Repeatedly
                      .forever(AfterProcessingTime
                              .pastFirstElementInPane()
                              .plusDelayOf(Duration.standardSeconds(30))
                          )).withAllowedLateness(Duration.standardDays(1)).discardingFiredPanes()
      
    4. 将PCollection 写入Bigtable。

    【讨论】:

    • 您好,感谢您提供一个简短的想法。我正在研究python中的解决方案,很快就会在这里发布。
    • 当然。我只是想帮助您完成需要遵循的步骤。因为,我花了一天时间来实现。
    • 我不确定这在 Python 中是否可行。与 SDK 的 Java 版本中现有的支持不同,Apache Beam(截至 2.1.0 和即将推出的 2.2.0)中没有支持 BigTable 的源/接收器。
    • @Sam - 你能用 Python 解决这个问题吗?
    猜你喜欢
    • 2019-04-24
    • 2021-12-03
    • 2018-07-17
    • 1970-01-01
    • 2015-08-17
    • 2020-02-01
    • 2018-07-11
    • 2021-02-01
    • 2023-01-01
    相关资源
    最近更新 更多