无法从数据流管道正确将多字节字符串写入Spanner

时间:2018-06-20 09:40:50

标签: google-cloud-dataflow google-cloud-spanner

我想从Dataflow Pipeline将多字节字符串(例如Japanese)写入Spanner。 但这不起作用。

下面是我尝试的代码。 (编辑:我改写了更接近实际的内容)

ParDo.of(new DoFn<TableRow, Mutation>() {
  @ProcessElement
  public void processElement(ProcessContext c) throws IOException {
    TableRow row = c.element();
    Mutation.WriteBuilder mutationWriteBuilder = Mutation.newInsertOrUpdateBuilder('testtable');
    for (Entry<String, Object> entry : row.entrySet()) {
      String columnName = entry.getKey();
      Object value = entry.getValue();

      Charset utf8 = StandardCharsets.UTF_8;
      String str = new String(value.toString().getBytes(utf8), utf8);
      mutationWriteBuilder.set(columnName).to(str);
    }

    Mutation mutation = mutationWriteBuilder.build();
    c.output(mutation)
  }
}

此管道将成功,但是实际写入的值是乱码,例如'。'。

我做错什么了吗?

0 个答案:

没有答案