请找一些帮助。
我正在使用IntelliJ和SBT来构建我的应用程序。
我正在开发一个应用程序,以便在Spark Streaming中读取Kafka主题,以便对其进行一些ETL工作。不幸的是,我无法从卡夫卡读到。
KafkaUtils.createDirectStream没有解析并一直给我错误(无法解析符号)。我做了我的研究,看来我有正确的依赖。
这是我的build.sbt:
name := "ASUIStreaming"
version := "0.1"
scalacOptions += "-target:jvm-1.8"
scalaVersion := "2.11.11"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
libraryDependencies += "org.apache.spark" %% "spark-streaming" % "2.1.0"
libraryDependencies += "org.apache.spark" % "spark-streaming-kafka-0-8_2.11" % "2.1.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.1.0"
libraryDependencies += "org.apache.kafka" %% "kafka-clients" % "0.8.2.1"
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"
有什么建议吗?我还应该提一下,我没有在笔记本电脑上拥有管理员访问权限,因为这是一台工作计算机,我正在使用便携式JDK和IntelliJ安装。但是,我工作的同事情况相同,而且对他们来说也很好。
提前致谢!
答案 0 :(得分:0)
以下是我使用的主要Spark Streaming代码段。 注意:我已经屏蔽了一些机密工作数据,如IP和主题名称等。
import org.apache.kafka.clients.consumer.ConsumerRecord
import kafka.serializer.StringDecoder
import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark
import org.apache.kafka.clients.consumer._
import org.apache.kafka.common.serialization.StringDeserializer
import scala.util.parsing.json._
import org.apache.spark.streaming.kafka._
object ASUISpeedKafka extends App
{
// Create a new Spark Context
val conf = new SparkConf().setAppName("ASUISpeedKafka").setMaster("local[*]")
val sc = new SparkContext(conf)
val ssc = new StreamingContext(sc, Seconds(2))
//Identify the Kafka Topic and provide the parameters and Topic details
val kafkaTopic = "TOPIC1"
val topicsSet = kafkaTopic.split(",").toSet
val kafkaParams = Map[String, String]
(
"metadata.broker.list" -> "IP1:PORT, IP2:PORT2",
"auto.offset.reset" -> "smallest"
)
val kafkaStream = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder]
(
ssc, kafkaParams, topicsSet
)
}
答案 1 :(得分:0)
我能够解决这个问题。在重新创建项目并再次添加所有依赖项后,我发现在Intellij中某些代码必须在同一行上,否则它将无法编译。
在这种情况下,将 val kafkaParams 代码放在同一行(而不是代码块中)解决了这个问题!