对于黑名单过滤,采用的是访问日志形成的DStreaml与黑名单列表形成的RDD进行left join的方式,进行过滤。
步骤解读:
日志列表:
20190102,192.168.10.101
20190102,192.168.10.102
20190102,192.168.10.103
将访问日志转换为相应的 DStream
==> (192.168.10.101:20190102,192.168.10.101)(192.168.10.102:20190102,192.168.10.102)(192.168.10.103: 20190102,192.168.101.103)
黑名单列表(前提已知以下ip为黑名单ip)
192.168.10.101
192.168.10.102
黑名单列表转换为相应的 RDD
==>(192.168.10.101: true)(192.168.10.101: true)
将DStream和RDD进行leftjoin
(192.168.10.101: [<20190102,192.168.10.101>, <true>]) x
(192.168.10.102: [<20190102,192.168.10.102>, <true>]) x
(192.168.10.103: [<20190102,192.168.10.103>, <false>]) ==> tuple 1
用scala代码实现如下:
package com.fyy.spark.streaming
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}