ZK起動します。zkServer.sh開始
启动カフカ:kafka-server-start.sh $ KAFKA_HOME /設定/ server.properties
トピックを作成します。kafka-topics.sh --create --zookeeperノード1:2181 --replication-因子1 --partitions 1 --topicテスト
プロデューサーを起動します。kafka-console-producer.sh --brokerリストノード1:9092 --topicテスト
テストコードを実行します。
パッケージcom.lin.spark インポートorg.apache.kafka.common.serialization.StringDeserializer インポートorg.apache.spark.SparkConf インポートorg.apache.spark.rdd.RDDの インポートorg.apache.spark.streaming。{秒、StreamingContext} 輸入org.apache.spark.streaming.kafka010._ 輸入org.apache.spark.streaming.kafka010.LocationStrategies.PreferConsistentの 輸入org.apache.spark.streaming.kafka010.ConsumerStrategies.Subscribe / ** * 2019上で管理者が作成/ 6/7。 * / ハロー{オブジェクト デフメイン(引数を:配列[文字列]):単位 = { ヴァルkafkaParams =地図[文字列、オブジェクト]( "bootstrap.servers" - > "ノード1:9092" 、 "key.deserializer" - > classOf [StringDeserializer]、 "value.deserializer" - > classOf [StringDeserializer]、 "group.id" - > "use_a_separate_group_id_for_each_stream" 、 "auto.offset.reset" - > "最新" 、 "enable.auto.commit" - >(真:java.lang.Booleanの) ) valをconfに = 新しい SparkConf()setAppName( "ヘイロー"。 ).setMaster( "ローカル[2]" ) ヴァル・SSC = 新しい StreamingContext(CONF、秒(5 )) ヴァルトピック =配列( "試験") ヴァルストリーム = KafkaUtils.createDirectStream [文字列、文字列]( SSC、 PreferConsistent、 購読[文字列、文字列](トピック、kafkaParams) ) stream.foreachRDD(RDD => { ヴァルoffsetRange = rdd.asInstanceOf [HasOffsetRanges] .offsetRanges ヴァルmaped :RDD [(文字列、文字列)] = rdd.map(レコード=> (record.key、record.value)) // 计算逻辑 maped.foreach(のprintln) // 循环输出 ため(O < - offsetRange){ のprintln (S "$ {o.topic} $ {o.partition} $ {o.fromOffset} $ {o.untilOffset}") } }) ssc.start() ssc.awaitTermination() } }
参考:
http://spark.apache.org/docs/2.2.0/streaming-kafka-0-10-integration.html
https://cloud.tencent.com/developer/article/1355430