1

我有一个看起来像这样的 PCollection:

PCollection<KV<KV<String, EventSession>, Long>> windowed_counts

我的目标是把它写成一个文本文件。我想使用类似的东西:

windowed_counts.apply( TextIO.Write.to( "output" ));

但我很难正确设置编码器。这是我认为可行的:

    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 写成文本吗?我敢肯定我在这里遗漏了一些明显的东西......

4

1 回答 1

4

您是否尝试创建一个将 a PCollectionof转换KV<KV<String, EventSession>, Long>为 a PCollectionof Strings 然后将其写入文本文件的转换?

我发现它是满足我需求的最灵活的方式

于 2015-03-19T12:13:59.240 回答