gpt4 book ai didi

java - 如何在 Scala 中调用 FileIO.Write.via(Contextful, Contextful)

转载 作者:行者123 更新时间:2023-12-04 15:02:07 24 4
gpt4 key购买 nike

我将 Apache Beam 与 Scala 结合使用。要为不同类型的流数据创建具有各自模式的新 ParquetIO.Sink 实例,我试图在 上调用 .via(Contextful, Contextful)文件 IO.写入。但是,IntelliJ 找不到 overloaded method that I'm trying to use并引发此错误:Cannot resolve overloaded method 'via'

FileIO
.writeDynamic[String, DeserializedEvent]()
.by(new UDFs.PartitionByEventName())
.withDestinationCoder(StringUtf8Coder.of())
.withNumShards(numShards)
.withNaming(new UDFs.NameFiles())
.via(
Contextful.fn[DeserializedEvent, GenericRecord](
new UDFs.EventToGenericRecord() // SerializableFunction[DeserializedEvent, String]
),
Contextful.fn[String, ParquetIO.Sink](
new UDFs.SinkParquet() // SerializableFunction[String, ParquetIO.Sink]
)
)
.to(path)

这里有什么问题?

谢谢

最佳答案

Scala 的类型推断系统和重载解析系统不能完美地协同工作。在这种情况下,via() 函数的重载会阻止类型推断正常工作。 Why does scala fail to compile when method is overloaded in a seemingly unrelated way?对问题有很好的解释。

在您的情况下,您只需要将第二个 Contextful.fn 的类型参数更改为 [String, FileIO.Sink] 以使其与所需重载的签名相匹配。

关于java - 如何在 Scala 中调用 FileIO.Write.via(Contextful, Contextful),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66794112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com