統合createDirectStreamのスパークストリーミング+カフカウィザード

 

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

おすすめ

転載: www.cnblogs.com/linkmust/p/10990848.html