Spring Boot Vue 毕设系统讲解 12 【统计方法教学】

 /**
     * (按值统计)
     */
    @RequestMapping("/value/{xColumnName}/{yColumnName}")
    public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("xColumn", xColumnName);
        params.put("yColumn", yColumnName);
        EntityWrapper<BingxiangxinxiEntity> ew = new EntityWrapper<BingxiangxinxiEntity>();
        List<Map<String, Object>> result = bingxiangxinxiService.selectValue(params, ew);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        for(Map<String, Object> m : result) {
            for(String k : m.keySet()) {
                if(m.get(k) instanceof Date) {
                    m.put(k, sdf.format((Date)m.get(k)));
                }
            }
        }
        List<Map<String, Object>> result2 = new ArrayList<Map<String,Object>>();
        for(Map<String, Object> m : result) {
            List<Tuple2<String, Object>> data = new ArrayList<>();
            for(String s : m.keySet()) {
                data.add(new Tuple2<>(s, m.get(s)));
            }
            JavaPairRDD<String, Object> originRDD = javaSparkContext.parallelizePairs(data);
            result2.add(originRDD.collectAsMap());
        }
        return R.ok().put("data", result2);
    }

这段代码执行了一系列操作,旨在处理一些数据并将其转换为特定的格式,最后通过一个响应对象返回:

  1. 初始化参数和查询
    • 创建一个Map<String, Object>类型的params,用于存储查询时需要的参数。这里xColumnNameyColumnName是已经定义好的字符串变量,代表要查询的列名。
    • 调用bingxiangxinxiService.selectValue(params, ew)方法,传入参数和查询包装器,执行查询并返回一个List<Map<String, Object>>类型的结果集result。这个结果集可能包含多行数据,每行数据都是一个键值对映射,键是列名,值是对应的值。
  2. 日期格式化
    • 遍历result中的每个映射(Map<String, Object>),检查每个值的类型。如果值是Date类型,则使用SimpleDateFormat将其格式化为"yyyy-MM-dd"格式的字符串,并替换原来的值。
  3. 与Apache Spark的交互(问题所在)
    • 创建一个新的列表result2,意图是将result中的数据以某种形式转换后存入。
    • 再次遍历result中的每个映射m,为每个映射创建一个List<Tuple2<String, Object>>(这里假设Tuple2是一个自定义的或来自某个库的类,用于存储键值对)。
    • 将这个列表转换为JavaPairRDD<String, Object>(这是Apache Spark的一个分布式数据集类型)
    • 使用originRDD.collectAsMap()将RDD收集回一个映射。
    • 将这个映射添加到result2列表中
  4. 返回响应
    • 使用R.ok().put("data", result2)返回一个响应对象,其中data字段包含了经过处理的result2列表。但由于前面的处理存在逻辑问题,result2中的每个元素都是一个只包含一行数据的映射,这显然不是预期的结果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值