SparkStreamingはKafkaコードを統合します

SparkStreamingはKafkaコードを統合します

def main(args:Array [String]):Unit = {
// 1 create sparkConf
var conf = new SparkConf()。setAppName( "SparkStreaming")。setMaster( "local [*]")
// 2 create sparkContext
var sc = new SparkContext(conf)
sc.setLogLevel( "WARN")
// 3 StreamingContextを作成
val ssc = new StreamingContext(sc、Seconds(5))
val kafkaParams = Map [String、Object](
"bootstrap.servers"-> " hadoop01:9092、hadoop02:9092、hadoop03:9092 "、
" key.deserializer "-> classOf [StringDeserializer]、
" value.deserializer "-> classOf [StringDeserializer]、
" group.id "->" SparkKafkaDemo "、
//最も早い:各パーティションの下に送信済みオフセットがある場合、消費は送信済みオフセットから開始します。送信済みオフセットがない場合、消費は最初から開始します
//最新:各パーティションの下に送信済みオフセットがある場合、送信は送信済みオフセットから開始します;送信されたオフセットがない場合、パーティションの下に新しく生成されたデータが消費されます
//なし:トピックの各パーティションに送信されたオフセットがある場合、消費はオフセットの後に開始されます;パーティションに送信されたオフセットがない限り、例外がスローされます
。//オフセットは自動的に最新にリセットされるように構成されていますオフセット、つまり、オフセット位置から消費するオフセットがある場合、新しいデータ
"auto.offset.reset"-> "latest" から消費するオフセットは開始されません。//
falseは、自動送信をオフにすることを意味します。あなたが提出またはプログラマ手動メンテナンスするチェックポイントスパークヘルプ
「enable.auto.commit」 - (falseに:java.lang.Booleanの)>

。//カフカ4データを受信し、サービスロジックに従って計算
ヴァルkafkaDatas:InputDStream [ConsumerRecord [文字列、文字列]] =
KafkaUtils.createDirectStream [文字列、文字列](ssc、
LocationStrategies.PreferConsistent、//ローカル戦略、PreferConsistent公式推奨、高効率、バランスのとれた
ConsumerStrategies.Subscribe 文字列、文字列 //消費戦略

val WordOne:DStream [( String、Int)] = kafkaDatas.flatMap(a => a.value()。Split( ""))Map((_、1))
val WordCount:DStream [(String、Int)] = WordOne.reduceByKeyAndWindow((a:Int、b:Int)=> a + b、Seconds(10)、Seconds(5))
WordCount.print()
// 5開くリアルタイムタスク
ssc.start()
// 6タスクの
クローズを待機中ssc.awaitTermination()
}

元の記事を238件公開 賞賛された429件 ビュー250,000件

おすすめ

転載: blog.csdn.net/qq_45765882/article/details/105563492