Spark Streaming监听HDFS文件(Spark-shell)

需求:编写程序利用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()
posted @ 2024-11-04 11:12  你这过氧化氢掺水了  阅读(12)  评论(0编辑  收藏  举报