Apache spark 将kafka与spark streaming集成时始终返回空rdd
我使用的是Spark Streaming 1.5.2+卡夫卡Apache spark 将kafka与spark streaming集成时始终返回空rdd,apache-spark,streaming,apache-kafka,rdd,Apache Spark,Streaming,Apache Kafka,Rdd,我使用的是Spark Streaming 1.5.2+卡夫卡 object Kafka2HDFS { def main(args: Array[String]) { val sparkConf = new SparkConf().setAppName("Kafka2HDFS") val ssc = new StreamingContext(sparkConf, Seconds(5)) val zk = "192.168.1.105:2181,192.168.1.10
object Kafka2HDFS {
def main(args: Array[String]) {
val sparkConf = new SparkConf().setAppName("Kafka2HDFS")
val ssc = new StreamingContext(sparkConf, Seconds(5))
val zk = "192.168.1.105:2181,192.168.1.106:2181,192.168.1.107:2181"
val topicMap = Map("online_dev" -> 2)
val ds = KafkaUtils.createStream(ssc, zk, "group_online_dev", topicMap)
ds.map(_._2).window(Seconds(15)).foreachRDD(rdd => LogUtil.log.info(rdd.count()))
ssc.start()
ssc.awaitTermination()
}
}
kafka topiconline\u dev中有一些json字符串,它们可以与控制台使用者一起使用。提交应用程序后,zookeeper将包含以下结构:
group_online_dev
`- owner
`- online_dev
`- 1
- 2
...
组目录下没有偏移量目录
我的问题是,每个时间窗口中返回的RDD都是空的
在日志文件中,我发现所有rdd.count()都是0
为了更快地编译和部署,我并没有使用sbt汇编来打包包中的所有JAR。这是我的提交脚本:
~/spark-1.5.2/bin/spark-submit --executor-memory 30g\
--driver-memory 40g\
--executor-cores 10\
--num-executors 4\
--name Streaming\
--class dog.streaming.Kafka2HDFS\
--deploy-mode cluster\
--files "/home/hadoop/spark-1.5.2-t3-n/conf/hive-site.xml"\
--master yarn\
--driver-java-options "-XX:MaxPermSize=1G"\
--jars "lib/mysql-connector-java-5.1.38.jar,lib/datanucleus-api-jdo-3.2.6.jar,lib/datanucleus-core-3.2.10.jar,lib/datanucleus-rdbms-3.2.9.jar,lib/ImpalaJDBC4.jar,lib/play-functional_2.10-2.2.1.jar,lib/play-iteratees_2.10-2.2.1.jar,lib/play-datacommons_2.10-2.2.1.jar,lib/play-json_2.10-2.2.1.jar,lib/spark-core_2.10-1.5.2.jar,lib/spark-hive_2.10-1.5.2.jar,lib/spark-sql_2.10-1.5.2.jar,lib/spark-streaming-kafka_2.10-1.5.2.jar,lib/kafka_2.10-0.8.2.1.jar,lib/metrics-core-2.2.0.jar,lib/zkclient-0.7.jar"\
task/target/scala-2.10/jobs_2.10-1.0.jar
我也经历过类似的问题。一定要用 消费者卡夫卡配置中的“auto.offset.reset”->“最早的”属性 见: 消费者
为什么我的消费者从未获得任何数据 默认情况下,当 消费者是第一次启动的,它忽略了所有现有的 主题中的数据,并且只会使用在 消费启动。如果是这种情况,请尝试发送更多数据 在消费者启动之后。或者,您可以配置 通过将新的“auto.offset.reset”设置为“earlish”,消耗者 耗电元件为0.9,旧耗电元件为“最小”