1

SPARK 0.9 の受信機を実装しようとしています。Jnetpcap ライブラリを使用してパケットをキャプチャしたので、それを Scala の spark に渡す必要があります。「def receive()」メソッドでパケットのキャプチャ部分を記述するだけで十分ですか?

編集: Jnetpcap ライブラリを使用してパケットをキャプチャするこのリンクのコードは次のとおりです。

import java.util.Date
import java.lang.StringBuilder
import org.jnetpcap.Pcap
import org.jnetpcap.packet.PcapPacket
import org.jnetpcap.packet.PcapPacketHandler

object PacketCapture1 {
  def main(args: Array[String]){
    val snaplen = 64 * 1024 // Capture all packets, no trucation
    val flags = Pcap.MODE_PROMISCUOUS // capture all packets
    val timeout = 10 * 1000
    //val errbuf = new StringBuilder()

    val jsb = new java.lang.StringBuilder()
    val errbuf = new StringBuilder(jsb);
    val pcap = Pcap.openLive("eth0", snaplen, flags, timeout, errbuf)
    if (pcap == null) {
      println("Error : " + errbuf.toString())
    }
    println(pcap)
    val jpacketHandler = new PcapPacketHandler[String]() {

      def nextPacket(packet: PcapPacket, user: String) {
        println("Received packet at %s caplen=%4d len=%4d %s\n", new Date(packet.getCaptureHeader.timestampInMillis()),
          packet.getCaptureHeader.caplen(), packet.getCaptureHeader.wirelen(), user)
      }
    }
    pcap.loop(30, jpacketHandler, "jNetPcap works!")
    pcap.close()

  }
}

このコードを使用してキャプチャされたパケットのスパーク レシーバーを実装する方法は?

4

1 に答える 1

5

カスタム NetworkReceiver (または Spark 1.0+ の Receiver) を作成し、onStart()メソッドを実装する必要があります。Spark 0.9 については、http: //spark.apache.org/docs/0.9.1/streaming-custom-receivers.html を参照してください。

spark 1.0 (強く推奨) については、http://spark.apache.org/docs/latest/streaming-custom-receivers.htmlを参照してください。

于 2014-07-10T19:05:42.543 に答える