SparkStreaming流式日志过滤与分析,并对SparkStreaming简单操作使用

https://download.csdn.net/download/qq_36022808/11215955
我上传的资源包括:mysql-connector-java-5.1.47.jar 、数据源、源代码
操作环境:
pyspark
ubuntu16.04

一、基于netcat的聊天室
(1)在本地Linux下,启动NetCat服务端,并在1234端口监听
$ nc -lk 1234
(2)在本地Linux下,启动NetCat客户端,并连接Netcat服务端
$ nc localhost 1234
ps -an |grep nc nc进程记得kill掉,不然再次进入会影响你进不去
二、运行网络版的WordCount
保持服务端在监听
客户端和服务端建立连接,并统计单词数量
$ cd ~/spark
$ bin/run-example streaming.NetworkWordCount localhost 1234
注意:必须确保机器cpu核数>=2,本地的linux需要设置接入核数要大于(接收器+处理接收的数据,接收器如果是多个,要大于接收器的数量,Local线程数大于接收器数量)
因为这样会记录数据过快,最好保存操作日志或者增加反应时间

三、开发自己的StreamingWordCount,且支持统计历史数据:
(1)输入源来自Socket,和实验一一样。输出到控制台。
from pyspark.streaming import StreamingContext #导入SparkStreaming包
ssc = StreamingContext(sc, 1) #两个参数:1、sc参数 2、采样时间间隔(秒)
ds1=ssc.socketTextStream(‘localhost’,1234) #从netcat服务器接收文本数据
#其中ds1即为DStream,可以通过type函数查看,例如:type(ds1)

(2)自己开发一个Streaming的WordCount实现单词统计。
· dsx = ds1.flatMap(lambda line:line.split(’ '))
(3)使用到transform()算子。
dsxx=dsx.transform(lambda wordRDD:wordRDD.(后面是rdd的格式比如:map、flatmap)
(4)使用updateStateByKey()算子,可以对历史的单词出现的数量一起累计。
def updateFunc(newValues, runningValues):(key,value)
if runningValues is None:
runningValues= 0
return sum(newValues, runningValues) # 新值追加

dsxx.updateStateByKey(updateFunc)
dsxx.pprint()     ##定义输出到控制台
ssc.start();ssc.awaitTermination()

四、流式日志过滤与分析
(1)利用SparkStreaming从文件目录读入日志信息,日志内容包含:
”日志级别、函数名、日志内容“ 三个字段,字段之间以空格拆分。请看数据源的文件。
(2)对读入都日志信息流进行指定筛选出日志级别为error或warn的,并输出到外部MySQL中。
注意的是:
① 这些文件里面的内容应该具有相同的格式
② 这些文件通过原子移动或重命名文件的方式在dataDirectory创建
③ 如果在文件中追加内容,这些追加的新数据也不会被读取
(3)自行开发实现。按以下解决思路
(1)输入采用textFileStream()算子
(2)输出采用foreachRDD()算子
(3)将RDD转为DataFrame
(4)DataFrame注册为临时表,使用SQL过滤
将过滤后的数据保存到MySQL
操作环境:
ubuntu16.04
pycharm
spark2.x
mysql
1.下载mysql(有的就不用)
sudo apt-get install mysql-server 下载有点慢,你可以去看看剧了^_
如果需要用到远程连接 需要下载sudo apt-get install mysql-client
2.修改mysql配置
检测端口号(3306)对应ip
在这里插入图片描述
修改mysql安装目录中my.cnf文件(和我一样的安装方法,修改的文件路劲在/etc/mysql/mysqlld中)
修改bind-address = 127.0.0.1
为 bind-address = 0.0.0.0
3.关闭防火墙
sudo ufw disable 关闭
ufw status 查看状态
4.在spark的jars中加入
mysql-connector-java-5.1.47.jar(可以自己去下一个或者我发布的资源去下载那边得到)
5.记住编码格式
&characterEncoding=utf8
6.mysql在远程连接需要修改数据库配置
由于安全考虑一般默认是localhost
update user set host=”%” where user=”root”
flush privileges;
重启mysql服务
7.代码部分
外部环境需要引入:
spark = SparkSession.builder.appName(“Streaming”).getOrCreate()
sc=spark.sparkContext
其他写法和上面差不多,具体可以下载我上传的资源参考
df1.write.jdbc(mode=“overwrite”,url=url,table=“test_person1”, properties={“driver”:‘com.mysql.jdbc.Driver’})这个是写入mysql格式

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值