Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache beam数据流SDK错误,示例为_Java_Google Cloud Dataflow_Apache Beam - Fatal编程技术网

Java Apache beam数据流SDK错误,示例为

Java Apache beam数据流SDK错误,示例为,java,google-cloud-dataflow,apache-beam,Java,Google Cloud Dataflow,Apache Beam,我正在尝试一个beam google数据流管道示例,但是我遇到了一个关于MapElements和方法SingleFunction/SerializableFunction调用的异常。代码片段如下所示: static class ParseTableRowJson extends SimpleFunction<String, TableRow> { @Override public TableRow apply(String input) { try {

我正在尝试一个beam google数据流管道示例,但是我遇到了一个关于MapElements和方法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()));
静态类ParseTableRowJson扩展了SimpleFunction{
@凌驾
公共表行应用(字符串输入){
试一试{
返回Transport.getJsonFactory().fromString(输入,TableRow.class);
}捕获(IOE异常){
抛出新的RuntimeException(“解析表行json失败”,e);
}
}
}
......
p、 应用(TextIO.read().from(options.getInput()))
.apply(MapElements.via(新的ParseTableRowJson()))
.apply(新的ComputeTopSessions(采样阈值))
.apply(“写入”,
TextIO.write().withoutshading().to(options.getOutput());
例外情况是对方法的调用不明确:

Ambiguous method call. Both
via (SimpleFunction<String, TableRow>) in MapElements and
via (SerializableFunction)             in MapElements match
方法调用不明确。二者都
MapElements中的via(SimpleFunction)和
映射元素匹配中的via(SerializableFunction)
是否有其他人遇到了同样的异常并找到了解决方法

完整的示例在github()中

谢谢


费尔南多

这似乎已经在头部的代码中得到了修正。具体来说,
MapElements
不再有两个静态版本的
via
。短期而言,您可以从头部安装Beam,也可以通过使
ParseTableRowJson
a
DoFn
而不是
SimpleFunction

直接更新示例以使用
ParDo
,这似乎已经在头部的代码中得到了修复。具体来说,
MapElements
不再有两个静态版本的
via
。短期而言,您可以从HEAD安装Beam,也可以通过将
ParseTableRowJson
a
DoFn
而不是
SimpleFunction

直接更新示例以使用
ParDo
,感谢您的回复,我最终将MapElements转换为DoFn,效果很好。Hi Ben,谢谢你的回复,正如你所说,我最终将MapElements转换成了DoFn,效果很好。