单独spark-streaming
package cn.tedu.kafka.streaming
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.streaming.Seconds
import org.apache.spark.streaming.kafka.KafkaUtils
object Driver {
def main(args: Array[String]): Unit = {
//--SparkStreaming和Kafka整合时,如果是本地模式,线程数至少是2个线程
//--其中一个线程负责SparkStreaming 另外一个线程负责从kafka消费数据
//--如果只有1个线程,则现象是:SparkStreaming可以启动,但无法获取数据
val conf=new SparkConf().setMaster("local[2]").setAppName("kafkastream")
val sc=new SparkContext(conf)
val ssc=new StreamingContext(sc,Seconds(5))
//--定义zookeeper集群地址,不需要全部写出,但也不要只写一个。
val zkHosts="hadoop01:2181,hadoop02:2181,hadoop03:2181"
//--定义消费者线程所归属的组名。组内竞争消费,组间共享消费
val groupId="gp1"
//--指定消费的主题信息。key是主题名,value是消费的线程数(至少是一个)
//--可以指定消费多个主题信息
val topics=Map("enbook"->1,"cnbook"->1)
//--通过工具类,从Kafak消费数据
val kafkaStream=KafkaUtils.createStream(ssc, zkHosts, groupId, topics)
kafkaStream.print
ssc.start
ssc.awaitTermination()
}
}
spark-streaming与kafka结合
package cn.tedu.kafka.streaming
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.streaming.Seconds
import org.apache.spark.streaming.kafka.KafkaUtils
object Driver {
def main(args: Array[String]): Unit = {
//--SparkStreaming和Kafka整合时,如果是本地模式,线程数至少是2个线程
//--其中一个线程负责SparkStreaming 另外一个线程负责从kafka消费数据
//--如果只有1个线程,则现象是:SparkStreaming可以启动,但无法获取数据
val conf=new SparkConf().setMaster("local[2]").setAppName("kafkastream")
val sc=new SparkContext(conf)
val ssc=new StreamingContext(sc,Seconds(5))
//--定义zookeeper集群地址,不需要全部写出,但也不要只写一个。
val zkHosts="hadoop01:2181,hadoop02:2181,hadoop03:2181"
//--定义消费者线程所归属的组名。组内竞争消费,组间共享消费
val groupId="gp1"
//--指定消费的主题信息。key是主题名,value是消费的线程数(至少是一个)
//--可以指定消费多个主题信息
val topics=Map("enbook"->1,"cnbook"->1)
//--通过工具类,从Kafak消费数据
val kafkaStream=KafkaUtils.createStream(ssc, zkHosts, groupId, topics)
kafkaStream.print
ssc.start
ssc.awaitTermination()
}
}