数据流上传文件编码错误

时间:2018-06-19 02:31:18

标签: encoding gcloud dataflow

我的开发环境使用Eclipse OXYGEN,安装了Google Cloud for Eclipse 1.7.0。

我创建了Google云数据流Java项目。

测试wordcount示例时出现问题。

当读取存储桶中的文件时,它将从日志中正常输出,如下所示。

enter image description here

处理WordCount的数据并将数据存储在存储桶中时会出现问题。

enter image description here

如果您检查保存的文件,则可以看到上面的图片。

数据流不支持韩语吗?

这是我的TextIO.write代码

static class WriteData extends PTransform<PCollection<KV<URI, String>>, PDone>
{
    private String output;

    public WriteData(String output)
    {
          this.output = output;
    }

    @Override
    public Coder<?> getDefaultOutputCoder()
    {
        return KvCoder.of(StringDelegateCoder.of(URI.class), StringUtf8Coder.of());
    }

    @Override
    public PDone expand(PCollection<KV<URI, String>> outputfile) {
        // TODO Auto-generated method stub
        return outputfile
                .apply(ParDo.of(new DoFn<KV<URI, String>, String>(){
                    @ProcessElement
                    public void processElement(ProcessContext c)
                    {
                        output = c.element().getKey().toString();
                        LOG.info("WRITE DATA : " + c.element().getValue());
                        c.output(c.element().getValue());
                    }
                }))
                .apply(TextIO.write().to(output).withSuffix(".txt"));
    }
}

1 个答案:

答案 0 :(得分:0)

在大多数情况下,可以自动推断出正确的编码器,但是如果没有,则请确保在读取数据时指定了编码器。

当您需要指定编码器时,通常在从外部源将数据读取到管道中(或从本地数据创建管道数据)以及将管道数据输出到外部接收器时执行此操作。 / p>

例如,您可以解码数据以读取:

StringUtf8Coder.of().decode(inStream)