阿里云日志服务 + Flume + Kafka + Spark Streaming--part four (未完成)

这篇博客,我们一起来实现一个功能,实时舆论监控。

今天学到了一句话,Talk is cheap, show me your code,分享给大家

好,我们开始!

背景

公司现有的舆论监控是这样的,运营人员每隔一段时间会去查看阿里云日志服务的日志,但由于运营人员不熟这一块,肯定是不能让他们直接上阿里云去查看的,所以我们的开发在GM的菜单栏上加上了这个功能,当运营人员要查看玩家聊天日志的时候,选好时间日期等字段,发送请求给后端,后端调用阿里云提供的接口拿到从阿里云返回的日志,后台处理过后返回给前端界面。

那么这样做有什么缺点呢?首先,这个舆论监控功能不够实时,比如说,我们的运营人员可能每半个小时才会查看一次日志,那么就有可能过了半小时,运营人员才看到某个玩家有不当言论,这个时候再去采取相应措施处理,菜都凉了。而更多时候,是玩家主动的跟我们的客服人员投诉某玩家有不当言论,我们的运营人员才去查看相关日志。而且我们的运营人员每次查看日志,真的是把所有玩家的聊天记录从头到尾都看个遍,这实在是浪费时间啊!Life is short, why not make good use of time and learn Python haha?

方案概述

针对上面的背景介绍,提出如下方案,简述如下

  1. 前端GM界面提供让我们的运营人员自定义敏感关键字功能,并把敏感关键字存到MySQL数据库
  2. 使用 Flume + Kafka + Spark Streaming 处理玩家聊天日志
  3. 实时,间隔时间为10s
  4. 自动告警

实现

在Kafka创建topic名为mafia-chat,如图

代码如下

bin/kafka-topics.sh \
--create \
--zookeeper hadoop004:2181/kafka  \
--replication-factor 1 \
--partitions 3 \
--topic mafia-chat

bin/kafka-topics.sh \
--list \
--zookeeper hadoop004:2181/kafka

进入Flume文件夹

[hadoop@hadoop004 bin]$ pwd
/data/aaron/app/apache-flume-1.6.0-cdh5.7.0-bin/bin

[hadoop@hadoop004 bin]$ nohup ./flume-ng agent --name sls-flume-kafka \
> --conf /data/aaron/app/apache-flume-1.6.0-cdh5.7.0-bin/conf/conffile \
> --conf-file /data/aaron/app/apache-flume-1.6.0-cdh5.7.0-bin/conf/conffile/mafia-chat.conf \
> -Dflume.root.logger=INFO,console &

通过Kafka consumer消费看到数据,此处涉及到公司相关信息,就不贴图了

下面我们再来演示在Spark Streaming中读取MySQL数据库,代码如下

        val mysqlDF = spark.read.format("jdbc")
          .option("url", "jdbc:mysql://ip:3306")
          .option("dbtable", "mafia_chat.forbidden_word")
          .option("user", "root").option("password", "pwd")
          .option("driver", "com.mysql.jdbc.Driver").load()
        mysqlDF.show

在启动Spark作业之前,我们还需要做一些准备工作,如下

create database mafia_chat;

CREATE TABLE `forbidden_word` (
  `id` int(11) NOT NULL,
  `word` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

grant all on *.* to root@'*';
flush privileges;

INSERT INTO forbidden_word (id, word) VALUES(1, '结婚');
INSERT INTO forbidden_word (id, word) VALUES(2, '联姻');

启动Spark Streaming作业

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值