在数据流 2.x 中将 TableRow 转换为 JSON 格式的字符串的最简单方法?
Easiest way to convert a TableRow to JSON-formatted String, in dataflow 2.x?
缺少我自己的函数来完成它,将数据流 2.x 管道内的 TableRow
对象转换为 JSON 格式的字符串的最简单方法是什么?
我认为下面的代码可以工作,但它没有在 key/values 之间正确插入引号,尤其是在有嵌套字段的地方。
public static class TableRowToString extends DoFn<TableRow, String> {
private static final long serialVersionUID = 1L;
@ProcessElement
public void processElement(ProcessContext c) {
c.output(c.element().toString());
}
}
}
使用 GSON
并执行 gson.toJson(yourTableRow)
详细信息 here
我运行遇到了同样的问题,我用org.apache.beam.sdk.extensions.jackson.AsJsons解决了。
要使用它,不需要创建一个新的t运行sform,你可以直接在管道上应用它。
import org.apache.beam.sdk.extensions.jackson.AsJsons;
Pipeline p = Pipeline.create(options);
p.apply("The transform that returns a PCollection of TableRow")
.apply("JSon Transform", AsJsons.of(TableRow.class));
如果您使用 Maven 管理您的项目,您可以将其添加到 pom.xml
文件中的 <dependencies>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-extensions-json-jackson</artifactId>
<version>2.5.0</version>
<scope>compile</scope>
</dependency>
缺少我自己的函数来完成它,将数据流 2.x 管道内的 TableRow
对象转换为 JSON 格式的字符串的最简单方法是什么?
我认为下面的代码可以工作,但它没有在 key/values 之间正确插入引号,尤其是在有嵌套字段的地方。
public static class TableRowToString extends DoFn<TableRow, String> {
private static final long serialVersionUID = 1L;
@ProcessElement
public void processElement(ProcessContext c) {
c.output(c.element().toString());
}
}
}
使用 GSON
并执行 gson.toJson(yourTableRow)
详细信息 here
我运行遇到了同样的问题,我用org.apache.beam.sdk.extensions.jackson.AsJsons解决了。
要使用它,不需要创建一个新的t运行sform,你可以直接在管道上应用它。
import org.apache.beam.sdk.extensions.jackson.AsJsons;
Pipeline p = Pipeline.create(options);
p.apply("The transform that returns a PCollection of TableRow")
.apply("JSon Transform", AsJsons.of(TableRow.class));
如果您使用 Maven 管理您的项目,您可以将其添加到 pom.xml
文件中的 <dependencies>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-extensions-json-jackson</artifactId>
<version>2.5.0</version>
<scope>compile</scope>
</dependency>