spark streaming是建立在spark上的大規模實時流計算框架。通過閱讀官方文檔,做了一個本地的測試。
1.需要的工具
netcat:通過TCP和UDP在網絡中讀寫數據的工具 下載地址:http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz spark:編譯安裝並起動的spark,可以直接下載官方已經編譯好的包,解壓之後直接運行。(參考官方文檔) 主機:由於是在本地測試,只需要一臺計算機。
2.起動netcat的監聽端口
在“終端1”中輸入:nc -l -p 9999 [root@db1 netcat-0.7.1]# nc -l -p 9999 起動成功後,光標在下一行一直閃爍等待輸入數據。
3.測試netcat
另外打開一個終端,暫叫做“終端2”,在”終端2“中輸入:nc -l -p 9999 此時,”終端2“就等待”終端1“輸入數據。我們在”終端1“中輸入:12,後回車,在”終端2“中會看到“12”,表示收到數據。 停止”終端2“的netcat,進行下一步的streaming測試。
4.在”終端2“中運行spark作業
如果沒有配置環境變量,就切換目錄到spark/bin目錄下 [root@db1 bin]# pwd /opt/spark/bin [root@db1 bin]# ./run-example streaming.NetworkWordCount localhost 9999 (NetworkWordCount源代碼在:spark/examples/src/main/scala/org/apache/spark/examples/streaming/NetworkWordCount.scala 9999:是我們在”終端1“用netcat啓動的監聽端口) 會車之後,會看到已下信息: . . . ------------------------------------------- Time: 1447049226000 ms ------------------------------------------- 15/11/09 01:07:06 INFO scheduler.JobScheduler: Finished job streaming job 1447049226000 ms.0 from job set of time 1447049226000 ms 15/11/09 01:07:06 INFO scheduler.JobScheduler: Total delay: 0.052 s for time 1447049226000 ms (execution: 0.047 s) 15/11/09 01:07:06 INFO rdd.ShuffledRDD: Removing RDD 563 from persistence list 15/11/09 01:07:06 INFO storage.BlockManager: Removing RDD 563 15/11/09 01:07:06 INFO rdd.MapPartitionsRDD: Removing RDD 562 from persistence list 15/11/09 01:07:06 INFO storage.BlockManager: Removing RDD 562 15/11/09 01:07:06 INFO rdd.MapPartitionsRDD: Removing RDD 561 from persistence list 15/11/09 01:07:06 INFO storage.BlockManager: Removing RDD 561 15/11/09 01:07:06 INFO rdd.BlockRDD: Removing RDD 560 from persistence list 15/11/09 01:07:06 INFO storage.BlockManager: Removing RDD 560 15/11/09 01:07:06 INFO dstream.SocketInputDStream: Removing blocks of RDD BlockRDD[560] at socketTextStream at NetworkWordCount.scala:53 of time 1447049226000 ms 15/11/09 01:07:06 INFO scheduler.ReceivedBlockTracker: Deleting batches ArrayBuffer(1447049224000 ms) . .
5.在”終端1“中輸入數據
輸入測試數據並以空格分割,比如輸入:hi this is a test! 在”終端2“中會看到如下輸出: ------------------------------------------- Time: 1447053798000 ms ------------------------------------------- (this,1) (is,1) (a,1) (hi,1) (test!,1)