黑名单:
(zs,true)
(ls,true)
日志格式:
20180808,zs
20180808,ls
20180808,ww
通过transform算子,使用leftOuterJoin联表:
val clicklog1 = lines.map(x => (x.split(",")(1),x)).transform(rdd => {rdd.leftOuterJoin(blacksRDD)})
clicklog1.print()
运行后的输出结果
(zs,(20180808,zs,Some(true)))
(ls,(20180808,ls,Some(true)))
(ww,(20180808,ww,None))
使用filter进行过滤:
filter(x => x._2._2.getOrElse(false) != true)
疑问:
第一个_2代表的是?
我的理解:通过leftOuterJoin后,输出的是一个2元组,_2是代表从左向右第2个值,还是代表从左向右下标为2的元素;
第二个_2代表的是?
我的理解:假定第一个_2是从左向右的第2个值,那取出的结果是(20180808,ls,Some(true)),是一个3元组;那么第2个_2取出的结果应该为ls,并不是true或者false呀
求老师解惑~