apachebeam数据流sdk错误示例

66bbxpm5  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(284)

我正在尝试一个beam-google数据流管道示例,但是在mapeelements和方法singlefunction/serializablefunction调用方面遇到了一个异常。代码段如下所示:

static class ParseTableRowJson extends SimpleFunction<String, TableRow> {
    @Override
    public TableRow apply(String input) {
        try {
            return Transport.getJsonFactory().fromString(input, TableRow.class);
        } catch (IOException e) {
            throw new RuntimeException("Failed parsing table row json", e);
        }
    }
}
......
p.apply(TextIO.read().from(options.getInput()))
                .apply(MapElements.via(new ParseTableRowJson()))
                .apply(new ComputeTopSessions(samplingThreshold))
                .apply("Write", 
TextIO.write().withoutSharding().to(options.getOutput()));

例外情况是对以下方法的调用不明确:

Ambiguous method call. Both
via (SimpleFunction<String, TableRow>) in MapElements and
via (SerializableFunction)             in MapElements match

是否有其他人遇到了同样的例外情况并找到了解决办法?
完整的例子在github中(https://github.com/apache/beam/blob/master/examples/java/src/main/java/org/apache/beam/examples/complete/topwikipediasessions.java).
谢谢,
费尔南多

zf2sa74q

zf2sa74q1#

这似乎已经在头部的代码中修复了。明确地, MapElements 不再有两个静态版本的 via . 短期而言,可以从头部安装梁,也可以更新示例以使用 ParDo 直接通过 ParseTableRowJsonDoFn 而不是 SimpleFunction .

相关问题