在Google Cloud Dataflow中使用带有复杂PCollection类型的TextIO.Write
我有一个看起来像这样的PCollection:
PCollection<KV<KV, Long>> windowed_counts
我的目标是将其写为文本文件。 我想过用的东西:
windowed_counts.apply( TextIO.Write.to( "output" ));
但我很难正确设置Coders。 这是我认为会起作用的:
KvCoder kvcoder = KvCoder.of(KvCoder.of(StringUtf8Coder.of(), AvroDeterministicCoder.of(EventSession.class) ), TextualLongCoder.of()); TextIO.Write.Bound io = TextIO.Write.withCoder( kvcoder ); windowed_counts.apply( io.to( "output" ));
其中TextualLongCoder是我自己的AtomicCoder的子类,类似于TextualIntegerCoder。 EventSession类注释为使用AvroDeterministicCoder作为其默认编码器。
但是有了这个,我得到了包含非文本字符等的乱码输出。有人可以建议你如何将这个特定的PCollection写成文本吗? 我确信这里有一些显而易见的东西……
您是否尝试创建一个转换,将PCollection
KV
的PCollection
为String
的PCollection
,然后将其写入文本文件?
我发现它是满足我需求的最灵活方式