根据窗口和元素计数从数据流写入GCS

时间:2018-08-21 16:58:20

标签: java google-cloud-storage google-cloud-dataflow google-cloud-pubsub dataflow

我正在尝试实现一个解决方案,其中我需要使用数据流将pubsub中的数据(json)消息写入GCS。我的问题与one

非常相似

我需要根据窗口或元素数来编写。 这是上述问题的代码示例:

windowedValues.apply(FileIO.<String, String>writeDynamic()
        .by(Event::getKey)
        .via(TextIO.sink())
        .to("gs://data_pipeline_events_test/events/")
        .withDestinationCoder(StringUtf8Coder.of())
        .withNumShards(1)
        .withNaming(key -> FileIO.Write.defaultNaming(key, ".json")));

该解决方案建议使用FileIO.WriteDynamic函数。但是我无法理解.by(Event :: getKey)的作用以及它的来源。 在此方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

根据事件的键将元素划分为组。

据我了解,事件来自使用KV类的PCollection,因为它具有getKey方法。

请注意:::是Java 8中包含的新运算符,用于引用类的方法。