需求:編寫程式利用Spark Streaming 監控HDFS 目錄/input目錄下的檔案,並對上傳的檔案進行詞頻統計。
首先,linux中需要有netcat,來實現監聽功能,有的linux會自帶這個軟體,可以用下面的命令測試一下,如果不報錯就沒問題,Ctrl+z可以退出
nc -l 9999
沒有netcat的可以用這個來下載,如果下載失敗應該是映象配置問題,報錯資訊複製貼上瀏覽器照著改一下就好了
sudo yum install nc –y
登入Linux系統後,啟動spark-shell。進入spark-shell以後,就已經獲得了一個預設的SparkConext,也就是sc。因此,可以採用如下方式來建立StreamingContext物件:
import org.apache.spark.streaming._
val ssc = new StreamingContext(sc,Seconds(1))
設定了20s檢查一次
import org.apache.spark.streaming._
val ssc = new StreamingContext(sc,Seconds(20))
val lines = ssc.textFileStream("hdfs://192.168.88.161:8020/input")
val words = lines.flatMap(_.split(" "))
val wordCounts = words.map(x => (x,1)).reduceByKey(_ + _)
wordCounts.print()
ssc.start()
新開一個linux終端視窗,往HDFS裡面傳一個檔案,這是內容
回到了之前的Spark-Shell視窗,看到了結果,非常的簡單
退出監聽(感覺不好用)
ssc.awaitTermination()