针对session粒度的聚合数据,按照使用者指定的筛选参数进行数据过滤
即对6.2中聚合后的数据,按照客户的刷选条件进行过滤。聚合数据
(ce6983270b154f31a7ca67b56f6abcb3,sessionid=ce6983270b154f31a7ca67b56f6abcb3|searchKeywords=温泉|clickCategoryIds=51,79,80|age=2|professional=professional23|city=city25|sex=male)
(d489a32c190e4dd1a7e0fd29fb92c495,sessionid=d489a32c190e4dd1a7e0fd29fb92c495|searchKeywords=新辣道鱼火锅,温泉,蛋糕|clickCategoryIds=17,51,39,91,46,8|age=2|professional=professional23|city=city25|sex=male)
(3783c8f44c3b465884f64a4923368261,sessionid=3783c8f44c3b465884f64a4923368261|searchKeywords=火锅,温泉|clickCategoryIds=90|age=2|professional=professional23|city=city25|sex=male)
通过使用Fliter算子进行过滤
/**
* 按筛选参数对session粒度聚合数据进行过滤
* @param sessionid2AggrInfoRDD 聚合后的数据
* @param taskParam 过滤的条件
* @return
*/
private static JavaPairRDD filterSession(
JavaPairRDD sessionid2AggrInfoRDD,
JSONObject taskParam) {
//从数据库中获取过滤的参数
String startAge = ParamUtils.getParam(taskParam, Constants.PARAM_START_AGE);
String endAge = ParamUtils.getParam(taskParam, Constants.PARAM_END_AGE);
String searchKeys = ParamUtils.getParam(taskParam, Constants.PARAM_KEYWORDS);
System.out.println(startAge+"------"+endAge+"----"+searchKeys);
JavaPairRDD filterRDD = sessionid2AggrInfoRDD.filter(new Function() {
@Override
public Boolean call(Tuple2 tuple) throws Exception {
// 首先,从tuple中,获取聚合数据
String aggrInfo = tuple._2;
Boolean isFilter = false;
//1、按照年龄范围进行过滤(startAge, endAge)
int age = Integer.valueOf(
StringUtils.getFieldFromConcatString(aggrInfo, "\\|", Constants.FIELD_AGE));
if(startAge != null && endAge != null){
if(age>=Integer.valueOf(startAge) && age
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?