Spark Streaming監聽HDFS檔案(Spark-shell)

你这过氧化氢掺水了發表於2024-11-04

需求:編寫程式利用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()

相關文章