Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 将kafka与spark streaming集成时始终返回空rdd_Apache Spark_Streaming_Apache Kafka_Rdd - Fatal编程技术网

Apache spark 将kafka与spark streaming集成时始终返回空rdd

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

我使用的是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.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,旧耗电元件为“最小”