对象FlinkKafkaConsumer010不是包org.apache.flink.streaming.connectors.kafka的成员

时间:2020-05-31 18:37:52

标签: apache-kafka sbt apache-flink flink-streaming

我正在尝试汇编一个小程序以使用apache flink连接到kafka主题。我需要使用FlinkKafkaConsumer010。

package uimp
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.api.TimeCharacteristic
import org.apache.flink.streaming.util.serialization.SimpleStringSchema
import org.apache.flink.streaming.connectors.kafka.{FlinkKafkaConsumer010}
import java.util.Properties

object Silocompro {
  def main(args: Array[String]): Unit = {
 // set up the execution environment
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime)

    val propertiesTopicDemographic = new Properties()
    propertiesTopicDemographic.setProperty("bootstrap.servers", "bigdata.dataspartan.com:19093")
    propertiesTopicDemographic.setProperty("group.id", "demographic")

    val myConsumerDemographic = new FlinkKafkaConsumer010[String]("topic_demographic", new 
    SimpleStringSchema(), propertiesTopicDemographic)

    val messageStreamDemographic = env
      .addSource(myConsumerDemographic)
      .print()


    env.execute("Flink Scala API Skeleton")

   }
 }

我的问题是,当尝试使用此build.sbt组装程序时,编译器返回错误“对象FlinkKafkaConsumer010不是包org.apache.flink.streaming.connectors.kafka的成员”:

      ThisBuild / resolvers ++= Seq("Apache Development Snapshot Repository" at 
      "https://repository.apache.org/content/repositories/snapshots/",Resolver.mavenLocal)

      name := "silocompro"

      version := "1.0"

      organization := "uimp"

      ThisBuild / scalaVersion := "2.12.11"

      val flinkVersion = "1.9.0"

      val flinkDependencies = Seq(
         "org.apache.flink" %% "flink-scala" % flinkVersion % "provided",
         "org.apache.flink" %% "flink-streaming-scala" % flinkVersion % "provided",
         "org.apache.flink" %% "flink-core"% flinkVersion % "provided",
         "org.apache.flink" %% "flink-connector-kafka-base" % flinkVersion % "provided",
         "org.apache.flink" %% "flink-clients" % flinkVersion % "provided",
         "org.apache.flink" %% "flink-connector-kafka" % flinkVersion % "provided")

      lazy val root = (project in file(".")).
      settings( libraryDependencies ++= flinkDependencies)


      assembly / mainClass := Some("uimp.Silocompro")

      Compile / run  := Defaults.runTask(Compile / fullClasspath,
                               Compile / run / mainClass,
                               Compile / run / runner
                              ).evaluated

 
      Compile / run / fork := true
      Global / cancelable := true

      assembly / assemblyOption  := (assembly / assemblyOption).value.copy(includeScala = false)

此依赖项错误的原因是什么?

2 个答案:

答案 0 :(得分:0)

连接器不是flink-binary的一部分,这意味着您需要在import LoadingScreen from './screens/LoadingScreen' import HomeScreen from './screens/HomeScreen' import LoginScreen from './screens/LoginScreen' import RegisterScreen from './screens/RegisterScreen' import ProfileScreen from './screens/profileScreen' import NotificationScreen from './screens/notificationScreen' import PostScreen from './screens/postScreen' import soruOnaylaScreen from './screens/soruOnaylaScreen' const AppContainer = createStackNavigator( { default: createBottomTabNavigator( { soruOnayla: { screen: soruOnaylaScreen, navigationOptions: { tabBarIcon: ({ tintColor }) => <Ionicons name="ios-chatboxes" size={24} color={tintColor} /> } }, Home: { screen: HomeScreen, navigationOptions: { tabBarIcon: ({ tintColor }) => <Ionicons name="ios-home" size={24} color={tintColor} /> } }, Post: { screen: PostScreen, navigationOptions: { tabBarIcon: ({ tintColor }) => <Ionicons name="ios-add-circle" size={36} color='#E9446A' style={{ shadowColor: "#E9446A", shadowOffset: { width: 0, height: 0 }, shadowRadius: 10, shadowOpacity: 0.3 }} /> } } , Notification: { screen: NotificationScreen, navigationOptions: { tabBarIcon: ({ tintColor }) => <Ionicons name="ios-notifications" size={24} color={tintColor} /> } }, Profile: { screen: ProfileScreen, navigationOptions: { tabBarIcon: ({ tintColor }) => <Ionicons name="ios-person" size={24} color={tintColor} /> } } }, { tabBarOptions: { activeTintColor: "#161f3d", inactiveTintColor: "#b8bbc4", } } ), postModal: { screen: PostScreen } }, { mode: "modal", headerMode: "none" } ) const AuthStack = createStackNavigator({ Login: LoginScreen, Register: RegisterScreen }) export default createAppContainer( createSwitchNavigator( { Loading: LoadingScreen, App: AppContainer, Auth: AuthStack }, { initialRouteName: "Loading" } ) ) 范围内拥有连接器,因此,这基本上意味着您需要从那些依赖项中删除compile。在此设置下,该应用将可以在群集上运行。

但是,如果要在本地启动而不启动集群,则应该在provided范围内拥有所有flink依赖项,即删除所有compile范围声明。

答案 1 :(得分:0)

最后,我遇到了依赖问题。我已经做了一些动作:

  1. 我添加了一个新的解析器 https:/oss.sonatype.org/content/repositories
  2. 我已卸载 VS Code的插件Metals(scala)
  3. 我添加了“ org.apache.flink” %%“ flink-connector-kafka-0.10”%flinkVersion-tomy flinkDependencies

在执行此操作后,我解决了我的库依赖问题。谢谢

相关问题