【发布时间】:2020-10-28 16:39:11
【问题描述】:
我有最旧的 Flink 版本,想更新到最新的稳定版本。 BucketingSink 在最新版本中被弃用,我尝试用 StreamingFileSink 更改它。要初始化它,我使用 StreamingFileSink.forBulkFormat 但有错误:
type arguments [T] do not conform to method forSpecificRecord's type parameter bo
unds [T <: org.apache.avro.specific.SpecificRecordBase]
[ERROR] .forBulkFormat(new Path(s"${conf.output}/$path") , AvroWriters.forSpecificRecord[T](classOf[T]) )
我也找不到如何设置bucketer:DateTimeBucketer[T], inactiveBucketThreshold, writer: Writer[T]
你能帮我找到正确的方法吗?
旧代码:
trait Runner[T <: SpecificRecordBase] extends Serializable {
def createHdfsSink(conf: FlinkConfig, path: String): BucketingSink[T] = {
val bucketer = new DateTimeBucketer[T]
val sink = new BucketingSink[T](s"${conf.output}/$path")
sink
.setBatchSize(toBytes(conf.batchSize))
.setBucketer(bucketer)
.setInactiveBucketThreshold(toMillis(conf.inactiveBucketThreshold))
.setWriter(writer)
.setPendingPrefix(pendingPrefix)
.setBatchRolloverInterval(conf.fileOpenIntervalTime)
}
有错误的新代码:
def createHdfsStreamingSink[T : ClassTag](conf: FlinkConfig, path: String): StreamingFileSink[T] = {
val sink = StreamingFileSink
.forBulkFormat(new Path(s"${conf.output}/$path") , AvroWriters.forSpecificRecord[T](classOf[T]) )
.build()
// TODO: .withOutputFileConfig()
sink
}
【问题讨论】:
标签: java scala apache-flink