我正在尝试汇编一个小程序以使用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)
此依赖项错误的原因是什么?
答案 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)
最后,我遇到了依赖问题。我已经做了一些动作:
在执行此操作后,我解决了我的库依赖问题。谢谢