ストリーミングラジオアキュムレータと変数とSQL

アキュムレータ、放送変数

アキュムレータ(アキュムレータ)変数と放送(放送変数)は、スパークストリーミングでのチェックポイントから回復することはできません
Wordの7 * 2中断のない操作、中間ロジックをカウントダウン
アキュムレータは蓄積されたデータへのダウンタイムからキャッシュ10からデータを取得できない場合にのみ、再計算することができ
シングルトンを使用する時間を作成します
あなたもチェックしてアキュムレータと放送変数の使用を有効にした場合、
そして、あなたは彼らが再インスタンス化することができ、再起動後に故障により駆動するために、変数のアキュムレータと遅延放送の単一のインスタンスを作成する必要があります。
ケース:
com.bw.streaming.day03パッケージ

インポートorg.apache.spark。SparkConf {、} SparkContext 
インポートorg.apache.spark.broadcast.Broadcast 
インポートorg.apache.spark.streaming。秒{、} StreamingContext 
インポートorg.apache.spark .util.LongAccumulator 

// 放送変数と発生が敏感な言葉監視するための積算
オブジェクトWordBlakList { 
  DEFメイン(引数:配列[文字列]):単位 = { 

    ヴァルconfに = 新しい新 SparkConf()setAppName(Sを。" $ {これを} .getClass.getSimpleName ").setMaster(" ローカル[2] 
    ヴァルSSC = 新しい新しい StreamingContext(CONF、秒(2))
     // 取得ストリームソケット 
    ヴァル= ssc.socketTextStreamストリーム(" linux04 "9999 // サービス処理 
    stream.foreachRDD(R&LT => {
       // 放送変数から敏感な単語を取得

      ヴァル単語:配列[文字列] = WordBlackListBC .getInstance(r.sparkContext).Valueの
       // アキュムレータ、単語出現頻度と敏感算出 
      ヴァルの累積値:LongAccumulator = WordBlackListAccum.getInstance(r.sparkContext)
      。R&LT のforeach(T => {
         IF (words.contains(T))を{ 
          accum.add(1 
        } 
      })
      println(" 敏感词汇:" + accum.value)

    })
    ssc.start()
    ssc.awaitTermination()
  } 
} 

// オブジェクト是单例模式
オブジェクトWordBlackListBC { 
  @volatile   プライベート VARのインスタンスを:ブロードキャスト[配列[文字列] = ヌル
  のgetInstance(:SparkContext SC):DEFブロードキャスト[配列[文字列] = {
     場合(例えば== NULL ){ 
      同期{ 
        場合(例えば== NULL ){ 
          インスタンス = sc.broadcast(配列(" A "" C " ))
        } 
      } 
    } 
   インスタンスは
  } 
} 

// 累加器
オブジェクトWordBlackListAccum { 
  @volatile プライベート するvar LongAccumulator =インスタンスヌル
  )SparkContext:DEFのgetInstance(皮下LongAccumulator = {
     場合(例えば== NULL ){ 
      {同期
        場合(インスタンス== NULL ){ 
          インスタンス = sc.longAccumulator(" WordsInBlacklistCounter " 
        } 
      } 
    }
    インスタンス
  } 
}

 2.DataFream ANS SQL操作

あなたは簡単にストリーム上でデータフレームとSQLデータを使用することができます。あなたは使用する必要があります
SQLContextのStreamingContext使用を作成するためのSparkContext。また、このプロセスが可能
ドライブの故障後に再起動します。我々は、単一インスタンスのインスタンスを作成することにより、これを行うSQLContext
この作品。次の例では。私たちは、データフレームを使用するように変更カウントを先行単語にありました
そして、ワードカウントを生成するためのSQL。各RDDはDATAFRAME、一時的なテーブル構成に変換され、
そして、SQLでクエリ。
 

 

おすすめ

転載: www.cnblogs.com/JBLi/p/11367424.html