[英]How to use Flink's KafkaSource with Scala in 2022
我已经检查了这个类似但有 7 年历史的问题,但它不适用于较新的 Flink 版本。
我正在尝试运行一个简单的 Flink Kafka 作业,并尝试了各种版本,每个版本都有不同的编译错误。 我正在使用 sbt 来管理我的依赖项:
val flinkDependencies = Seq(
"org.apache.flink" %% "flink-clients" % flinkVersion,
"org.apache.flink" %% "flink-scala" % flinkVersion,
"org.apache.flink" %% "flink-streaming-scala" % flinkVersion,
"org.apache.flink" %% "flink-connector-kafka" % flinkVersion
)
尝试过的版本:
scala 2.11.12 和 2.12.15
弗林克 1.14.6
我正在尝试编译的代码(相关位):
import org.apache.flink.streaming.util.serialization.SimpleStringSchema
import org.apache.flink.connector.kafka.source.KafkaSource
...
val env = ExecutionEnvironment.getExecutionEnvironment
val kafkaConsumer = new KafkaSource.builder[String]
.setBootstrapservers("localhost:9092")
.setGroupId("flink")
.setTopics("test")
.build()
val text = env.fromSource(kafkaConsumer)
我没有找到一个官方示例来说明这确实应该如何使用KafkaSource
,但我在此处和此处找到了此设置。 在我仍然很陌生的 Java 眼中,这看起来与API 文档一致。 但是是的,它无法与 Scala 版本一起使用:
[error] somepathwithmyfile: type builder is not a member of object org.apache.flink.connector.kafka.source.KafkaSource
[error] val kafkaConsumer = new KafkaSource.builder[String]
[error] ^
[error] somepathwithmyfile: value fromSource is not a member of org.apache.flink.api.scala.ExecutionEnvironment
[error] val text = env.fromSource(kafkaConsumer)
[error] ^
[error] two errors found
对于第一个问题,删除new
的:
val kafkaConsumer = KafkaSource.builder[String]
...
对于第二个问题, fromSource
需要三个arguments:
/** Create a DataStream using a [[Source]]. */
@Experimental
def fromSource[T: TypeInformation](
source: Source[T, _ <: SourceSplit, _],
watermarkStrategy: WatermarkStrategy[T],
sourceName: String): DataStream[T] = {
val typeInfo = implicitly[TypeInformation[T]]
asScalaStream(javaEnv.fromSource(source, watermarkStrategy, sourceName, typeInfo))
}
另外请注意,Flink(目前)还不支持 scala 2.12.15。 请参阅https://issues.apache.org/jira/browse/FLINK-20969 。 但是,如果排除 Flink 内置的 scala API 支持,Flink 1.15 可以与较新版本的 Scala(包括 Scala 3)一起使用。 有关更多信息,请参见https://flink.apache.org/2022/02/22/scala-free.html 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.