【问题标题】:Apache beam parsing data flow pub/sub into a dictionaryApache Beam 将数据流 pub/sub 解析为字典
【发布时间】:2019-07-14 15:23:47
【问题描述】:

我正在使用光束/数据流运行流式传输管道。我正在阅读来自 pub/sub 的输入,并将其转换为如下所示的字典:

    raw_loads_dict = (p 
      | 'ReadPubsubLoads' >> ReadFromPubSub(topic=PUBSUB_TOPIC_NAME).with_output_types(bytes)
      | 'JSONParse' >> beam.Map(lambda x: json.loads(x)) 
    )

由于这是在高吞吐量管道的每个元素上完成的,我担心这不是最有效的方法吗?

在这种情况下,最佳做法是什么,考虑到我在某些情况下会处理数据,但可能会直接将其流式传输到 bigquery。

【问题讨论】:

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


    【解决方案1】:

    这种方法很好,除非发生了一些效率极低的事情或者您有一些特定的问题(例如,您观察到的某些指标似乎不正确)。 JSON 解析似乎足够轻巧,这不会成为问题。 Beam pipeline runner 甚至可以像这样融合多个操作,以便它们在同一台机器上执行以提高效率,以避免在工作机器之间传输数据。

    您可能会开始看到性能问题的主要情况可能涉及外部系统(例如,网络延迟或调用外部服务时的限制),或需要聚合数据的分组操作(例如,使用 GroupByKey/CoGroupByKey 实现联接)在某处的持久存储中,需要在工作机器之间传输(洗牌操作)。在这些情况下,尽管与网络、持久性和其他相关成本相比,JSON 解析或每个元素运行一些相对简单的转换代码的成本可能可以忽略不计。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 2019-07-03
      相关资源
      最近更新 更多