sparkstreaming使用python实现黑名单过滤
场景如下:zs(张三),ls(李四)在黑名单中,ww(王五)不在黑名单中。将zs,ls过滤,得出ww不在黑名单,代码如下:
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
#黑名单过滤
#sc = SparkContext(master=“local[2]”,appName=“TransformAPP”)
ssc = StreamingContext(sc, 5)
blacks = [‘zs’, ‘ls’]
#列表转RDD:[(‘zs’, ‘true’), (‘ls’, ‘true’)],true:在黑名单中
blackRDD = sc.parallelize(blacks).map(lambda x: (x, ‘true’))
lines = ssc.socketTextStream(“localhost”, 6789)
#将输入数据做转换、过滤
clicklog = lines.map(lambda line: (line.split(",")[1], (line)))
.transform(lambda rdd: rdd.leftOuterJoin(blackRDD))
.filter(lambda x: x[1][1] == None)
.map(lambda a: a[0])
clicklog.pprint()
ssc.start()
ssc.awaitTermination()
首先启动nc
然后启动pyspark
将上面的代码拷贝到命令行测试
输入测试数据
查看结果,正是我们想要的ww(不在黑名单中)