Hadoop好友推荐系统-去重后的数据存入数据库

来源:互联网 发布:linux查看任务的命令 编辑:程序博客网 时间:2024/05/17 20:35

项目总目录:基于Hadoop的好友推荐系统项目综述

一、去重后的数据存入数据库

1、前端展示

  • jsp页面
<table>                <tr>                    <td><label for="name">输入路径:</label></td>                    <td><input class="easyui-validatebox" type="text"                        id="resolveFileId" data-options="required:true"  style="width:300px"                        value="WEB-INF/classes/deduplicate_users"/>                    </td>                </tr>                <tr>                    <td></td>                    <td>                    <a id="resolveId" href="" class="easyui-linkbutton" data-options="iconCls:'icon-door_in'">解析入库</a>                    </td>                </tr>            </table>

jsp页面默认的文件输入路径是WEB-INF/classes/deduplicate_users,这也是去重文件下载操作的默认输出路径。所以在进行该操作前先进数据下载操作。

  • js逻辑
// ===== 解析入库    $('#resolveId').bind('click', function(){        var input_=$('#resolveFileId').val();        // 弹出进度框        popupProgressbar('数据入库','数据解析入库中...',1000);        // ajax 异步提交任务        callByAJax('cloud/cloud_resolve2db.action',{input:input_});    });

2、后端逻辑

  • action层

对应的action从这里获取callByAJax(‘cloud/cloud_resolve2db.action’,

/**     * 解析入库     */    public void resolve2db(){        Map<String,Object> map=dBService.insertUserData(Utils.getRootPathBasedPath(input));        Utils.write2PrintWriter(JSON.toJSONString(map));        return ;    }
  • service层
/**     * 批量插入数据     *      * @param xmlPath     * @return     */    public Map<String, Object> insertUserData(String xmlPath) {        Map<String, Object> map = new HashMap<String, Object>();        try {            baseDao.executeHql("delete UserData");            List<String[]> strings = Utils.parseDatFolder2StrArr(xmlPath);            List<Object> uds = new ArrayList<Object>();            for (String[] s : strings) {                uds.add(new UserData(s));            }            int ret = baseDao.saveBatch(uds);            log.info("用户表批量插入了{}条记录!", ret);        } catch (Exception e) {            e.printStackTrace();            map.put("flag", "false");            map.put("msg", e.getMessage());            return map;        }        map.put("flag", "true");        return map;    }

其中Utils.parseDatFolder2StrArr定义如下:

/**     * 定制解析     * @param datFolder     * @return     */    public static List<String[]> parseDatFolder2StrArr(String datFolder) {        File folder = new File(datFolder);        List<String[]> list = new ArrayList<String[]>();        File[] files=null;        try{            files= folder.listFiles();            for(File f:files){                list.addAll(parseDat2StrArr(f.getAbsolutePath()));            }        }catch(Exception e){            e.printStackTrace();        }        return list;    }/**     * 定制解析单个dat文件     * @param datFile     * @return     * @throws IOException      */    private static List<String[]> parseDat2StrArr(String datFile) throws IOException{        List<String[]> list = new ArrayList<String[]>();         FileReader reader = new FileReader(datFile);         BufferedReader br = new BufferedReader(reader);         String line = null;         String[] arr= null;         while((line = br.readLine()) != null) {             arr=new String[userdata_attributes.length];             for(int i=1;i<userdata_attributes.length;i++){                 arr[i]=Utils.getAttrValInLine(line, userdata_attributes[i]);             }             list.add(arr);         }         br.close();         reader.close();        return list;    }

二、去重后用户数据表查看

这里的查看方式和实现原理与用户登录表的原理基本一致,不再详述。

三、程序运行截图

1、前端

这里写图片描述

2、后台

这里写图片描述

3、用户数据查看

点击左侧用户数据查看选项卡,查看录入的用户数据:
这里写图片描述

阅读全文
0 0
原创粉丝点击