提问者:小点点

如何使用谷歌Pub/Sub与谷歌数据流/光束使用Python?


我是Pub/Sub和Dataflow/Beam的新手。我在Spark和Kafka中完成了一项任务,我想使用Pub/Sub和Dataflow/Beam做同样的事情。据我所知,Kafka类似于Pub/Sub,Spark类似于Dataflow/Beam。

任务是获取JSON文件并写入Pub/Sub主题。然后使用Beam/Dataflow我需要将该数据放入PCollection。我将如何实现这一点?


共2个答案

匿名用户

我解决了上面的问题。我能够连续从pubsub主题读取数据,然后进行一些处理,然后将结果写入数据存储。

with beam.Pipeline(options=options) as p:

    # Read from PubSub into a PCollection.
    lines = p | beam.io.ReadStringsFromPubSub(topic=known_args.input_topic)

    # Group and aggregate each JSON object.
    transformed = (lines
                   | 'Split' >> beam.FlatMap(lambda x: x.split("\n"))
                   | 'jsonParse' >> beam.ParDo(jsonParse())
                   | beam.WindowInto(window.FixedWindows(15,0))
                   | 'Combine' >> beam.CombinePerKey(sum))

    # Create Entity.
    transformed = transformed | 'create entity' >> beam.Map(
      EntityWrapper(config.NAMESPACE, config.KIND, config.ANCESTOR).make_entity)

    # Write to Datastore.
    transformed | 'write to datastore' >> WriteToDatastore(known_args.dataset_id)

匿名用户

Pubsub是一个流源/接收器(只读/写一次是没有意义的)。数据流pythonSDK对流的支持还不可用。

文档:https://cloud.google.com/dataflow/release-notes/release-notes-python.

一旦流媒体可用,你应该能够非常简单地做到这一点。

但是,如果您要从文件-