大数据最新Hadoop Web项目--Friend Find系统_hadoopha与web交互设计,2024年最新大数据开发工程师面试题目

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

这里初始化使用的是lz的虚拟机的配置,所以需要修改为自己的集群配置,点击某一行数据,在toolbar里即可选择修改或保存等。

  1. 系统原始文件:

系统原始文件在工程的:

3. 项目实现流程

项目实现的流程按照系统首页左边导航栏的顺序从上到下运行,完成数据挖掘的各个步骤。

3.1 数据探索

下载原始数据ask_ubuntu_users.xml 文件,打开,可以看到:

原始数据一共有19550条记录,去除第1、2、最后一行外其他都是用户数据(第3行不是用户数据,是该网站的描述);

用户数据需要使用一个主键来唯一标示该用户,这里不是选择Id,而是使用EmailHash(这里假设每个EmailHash相同的账号其是同一个人)。使用上面的假设后,对原始数据进行分析(这里是全部导入到数据库后发现的),发现EmailHash是有重复记录的,所以这里需要对数据进行预处理–去重;

3.2 数据预处理
  1. 数据去重

数据去重采用云平台Hadoop进行处理,首先把ask_ubuntu_users.xml文件上传到云平台,接着运行MR任务进行过滤。

  1. 数据序列化

由于计算用户向量两两之间的距离的MR任务使用的是序列化的文件,所以这里需要对数据进行序列化处理;

3.3 建模

建模即使用快速聚类算法来对原始数据进行聚类,主要包括下面几个步骤:

  1. 计算用户向量两两之间的距离;

  2. 根据距离求解每个用户向量的局部密度;

  3. 根据1.和2.的结果求解每个用户向量的最小距离;

  4. 根据2,3的结果画出决策图,并判断聚类中心的局部密度和最小距离的阈值;

  5. 根据局部密度和最小距离阈值来寻找聚类中心向量;

  6. 根据聚类中心向量来进行分类;

3.4 推荐

建模后的结果即可以得到聚类中心向量以及每个分群的百分比,同时根据分类的结果来对用户进行组内推荐。

项目流程图如下:

4. 项目功能及实现原理

项目功能主要包括下面:

4.1 数据库表维护

数据库表维护主要包括:数据库表初始化,即用户登录表和Hadoop集群配置表的初始化;数据库表增删改查查看:即用户登录表、用户数据表、Hadoop集群配置表的增删改查。

数据库表增删改查使用同一个DBService类来进行处理,(这里的DAO使用的是通用的)如果针对每个表都建立一个DAO,那么代码就很臃肿,所以这里把这些数据库表都是实现一个接口ObjectInterface,该接口使用一个Map来实例化各个对象。

public interface ObjectInterface {
	/**
	 * 不用每个表都建立一个方法,这里根据表名自动装配
	 * @param map
	 * @return
	 */
	public  Object setObjectByMap(Map<String,Object> map);
}

在进行保存的时候,直接使用前台传入的表名和json字符串进行更新即可

/**
	 * 更新或者插入表
	 * 不用每个表都建立一个方法,这里根据表名自动装配
	 * @param tableName
	 * @param json
	 * @return
	 */
	public boolean updateOrSave(String tableName,String json){
		try{
			// 根据表名获得实体类,并赋值
			Object o = Utils.getEntity(Utils.getEntityPackages(tableName),json);
			baseDao.saveOrUpdate(o);
			log.info("保存表{}!",new Object[]{tableName});
		}catch(Exception e){
			
			e.printStackTrace();
			return false;
		}
		return true;
	}
/**
	 * 根据类名获得实体类
	 * @param tableName
	 * @param json
	 * @return
	 * @throws ClassNotFoundException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 * @throws IOException 
	 * @throws JsonMappingException 
	 * @throws JsonParseException 
	 */
	@SuppressWarnings("unchecked")
	public static Object getEntity(String tableName, String json) throws ClassNotFoundException, InstantiationException, IllegalAccessException, JsonParseException, JsonMappingException, IOException {
		Class<?> cl = Class.forName(tableName);
		ObjectInterface o = (ObjectInterface)cl.newInstance();
		Map<String,Object> map = new HashMap<String,Object>();
		ObjectMapper mapper = new ObjectMapper();
		try {
			//convert JSON string to Map
			map = mapper.readValue(json, Map.class);
			return o.setObjectByMap(map);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
4.2 数据预处理

数据预处理包括文件上传、文件去重、文件下载、数据入库、DB过滤到HDFS、距离计算、最佳DC。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值