簡単な例をSparkStreaming(oldAPI)

簡単な例をSparkStreaming

◆ストリーミングプログラムの構築:(WORDCOUNT) 

  ◆使用するのに最適なプログラムストリーミングスパークMavenをスタンドアロンアプリケーションまたは実行のSBT翻訳の形でを。

  ◆調製:
  JAR用の1スパークストリーミング導入
  2.scalaストリーム・コンピューティングインポート宣言
  インポートorg.apache.spark.streaming.StreamingContext
  インポートorg.apache.spark.streaming.StreamingContext._の
  インポートorg.apache.spark.streaming.dstream .DStream
  インポートorg.apache.spark.streaming.Duration
  インポートorg.apache.spark.streaming.Seconds

 

1.初期StreamingContextオブジェクト

   // 1秒のローカルStreamingContext 2ワーカースレッドおよびバッチ間隔を作成します。
   新しい新しいSparkConf CONF =ヴァル()
   conf.setMaster( "ローカル[2]")
   conf.setAppName( "NetworkWordCount")
   ヴァルSSC =新しい新しいStreamingContext(CONF、秒(1))

2. DSTREAMオブジェクトを取得します。 

  // localhostのように、ホスト名DSTREAMへの接続を作成します:9999

   ヴァル線= ssc.socketTextStream( "ローカルホスト"、9999)

3.操作DSTREAMオブジェクト

  //受信データの各行は、スペースで単語に分割されています 

  lines.flatMapの言葉は=ヴァル(_。スプリット( ""))
  // StreamingContextは、暗黙的な変換で導入
  インポートorg.apache.spark.streaming.StreamingContext._

   //バッチごとに合計に単語を変換します

  words.mapペア=ヴァル(ワード=>(ワード,. 1))
  ヴァルwordcounts = pairs.reduceByKey(_ _ +)
  コンソールに10個の要素の前に//デフォルトの印刷各バッチを
  wordCounts.print()

4.スタートストリームハンドラ

  ssc.start //カウント

  ssc.awaitTermination()//終了を待って計算します

  ssc.stop()//エンド・アプリケーション

 

ネットワークポートを起動し、アナログデータ伝送

  コマンドの1。NC手段は、データを手動で入力します

    Linux / Macの場合:NC

    Windowsの場合:猫

      NC -lk 9999

  シミュレーションデータジェネレータで書かれたコードを用いて2  

パッケージcom.briup.streaming 

インポートてjava.io.PrintWriter
 インポートjava.net.ServerSocket 

インポートscala.io.Sourceの

オブジェクトMassageServerを{ 

  // ランダム整数取得メソッドの定義 
  DEFインデックス(長さ:INT)= {
     インポートjava.util.Randomの
    RDMヴァル = 新しい新しいランダム
    rdm.nextInt(長さ)
  } 

  DEFメイン(引数:配列[文字列]){ 
    のprintlnは(「アナログデータ開始!!!」// 行指定されたファイルの総数取得 
    ヴァルファイル名=「スパーク/ ihaveadream.txt " ; 
    ヴァル行 =  Source.fromFile(ファイル名).getLines.toList
    ヴァルのfilerow =lines.length 

    //するプログラムが要求したときに、外部接続が確立されたポートモニタを指定 
    ヴァル= ServerSocketを新しい新しい ServerSocketを(9999 ); 

    ながら、trueにする){
       // ポート9999をリッスンし、ソケットオブジェクトを取得 
      ヴァルソケット= ServerSocket.accept()
       //       println(ソケット)
      新しい新しいスレッド(){ 
        オーバーライドRUNのDEF = { 
          (printlnの "接続されたクライアントからもらった:" + socket.getInetAddress)

          ヴァルOUT = 新新のPrintWriter(Socket.getOutputStream()、trueに

          しばらく真の){
            Thread.sleep( 1000年// ポートが相互にランダムなデータ伝送線を取得し、要求を受け入れ 
            ヴァルコンテンツ=の行(インデックス(filerow))

            のprintln(コンテンツ)

            out.write(コンテンツ + '\ N-' 

            OUT。フラッシュ()
          } 
          Socket.close()
        } 
      } .start()
    } 
  } 
}
アナログ送信データ

 

 

注意事項:

◆ストリーミングがやっ1.スパークは、実行のフローを作成したすべてのステップの前に、プログラムが本当ではない
だけの実施計画のすべてを設定し、データ・ソースへの接続、また任意のデータ操作
するとssc.start(◆2。 )プログラムは、本当にすべての予想されるオペレーティング作る開始した後
、コールawaitTerminationフロー計算が完了するのを待つ必要があるので、◆3.実行は、別のスレッドで行われます
。4.◆ストリーミングコンテキストを一度だけ起動することができる
モードがローカルモードの場合◆5。 、、ローカル[n]を設定してくださいN> = 2 1つの処理するために、受信するための第

 
パッケージcom.briup.streaming 

インポートorg.apache.log4j {レベル、ロガー}。
 インポートorg.apache.spark.SparkConfの
 インポートorg.apache.spark.streaming {期間、StreamingContext} 

オブジェクトMyTestOldAPI { 
  DEFメイン(引数:配列[文字列]):単位 = {
     // 设置日志级别 
    Logger.getLogger( "ORG" ).setLevel(Level.WARN)

    // 1获取DS 
    ヴァルのCONF = 新しい SparkConf()setAppName( "MyTestOldAPI")setMaster(」。ローカル[*]」
    ヴァル・DSS = 新しい StreamingContext(confに、期間(1000年))
    valのDSDss.socketTextStream =( "localhost"を、9999 

    // 2ロジック   // 統計 
    ヴァル・RES = ds.filter(_!= "").FlatMap(_。スプリット( ""))。地図(ワード=>( ワード,. 1))。reduceByKey(_ + _)

    res.print()

    // 3オープンリアルタイム処理タスク
    dss.start()
    dss.awaitTermination()
    dss.stop()
  } 
}

 

おすすめ

転載: www.cnblogs.com/Diyo/p/11392059.html