当前位置: 首页 > news >正文

处理hadoop发送的文件到后台并解析存储到数据库策略

处理hadoop发送的文件到后台并解析存储到数据库策略

 

 

 

主要实现 :首先 hadoop  mapreduce  处理好的 文件,一个个 放到指定的文件 目录下 ,然后 通过 在Linux 下 通过定时任务 打包 发到   web 服务器的 指定 目录下 ,然后web 服务器  会 通过定时任务  去解析 它 ,然后,存储导数据库。

 

1.上篇 介绍了 文件 的 解压 ,通过解压后 文件 会形成 多个 文件 。



 如图 ,解压 后 ,我们 会 发现 有 很多 文件 ,然后 我们该 去 对每个文件 读取 内容 并 存到数据库中。

 

 

 

 2. map 为所有文件 解析类

      dataMap  所 有 数据 类   所有文件的 数据都存储到datamap 中了

 

for (File subfile : subFiles){
	AbstractFileParser ifp = map.get(subfile.getName());
	if (ifp != null) {
		try {
			ifp = ifp.getClass().newInstance();
			ifp.init(subfile, (StatMap) dataMap.get(subfile.getName()));
			jobList.add(ifp);
			ifp.start();
		} catch (Exception e) { e.printStackTrace(); }
	}
}
for (Thread ifp : jobList)
{
	try {
		ifp.join();
	} catch (InterruptedException e) { e.printStackTrace(); }
}

  

 

 AbstractFileParser 类

BufferedReader bufferedReader = null;
try
{
	bufferedReader = new BufferedReader(new FileReader(this.file));
	String s = null;
	while ((s = bufferedReader.readLine()) != null)
	{
		if (isDebug || logger.isDebugEnabled())
			logger.debug(s);
		String[] ss = s.split(",");
		StatBase o = parseLine(ss);
		if (o != null)
		{
			StatBase b = null;
			synchronized (map)
			{
				b = map.get(o.getPrivateKey());
				if (b == null)
				{
					map.put(o.getPrivateKey(), o);
				}
				else
				{
					update(o, b);
				}
			}
		}
	}
}
catch (Exception e)
{
	logger.error("", e);
}
finally
{
	if (bufferedReader != null)
		try
		{
			bufferedReader.close();
		}
		catch (IOException e)
		{
		}
}

 

 保存到 datamap 中的 数据 要进行 数据库保存

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

相关文章:

  • 猫猫学IOS(三十)UI之Quartz2D画图片画文字
  • Mac OS 安装boost
  • 使用Zookeeper存储Spring中properties的统一配置
  • 第四十二条:慎用可变参数
  • java使用Iterator、for循环同步数据
  • 不要盲目迷信多线程
  • 磁盘的5种卷,RAID—5的修复
  • IOS学习笔记--Objective-C之KVC、KVO
  • Skype for Business实战演练之八:安装Skype for Business Server 2015
  • android intent 传数据
  • java中HashSet详解(转)
  • 当我完善几年前的一个老项目时,我做了哪些改进
  • 简述ASP.NET MVC原理
  • 代码中的良好习惯从点滴做起
  • linux 下配置文件目录/etc/sysconfig
  • 【Linux系统编程】快速查找errno错误码信息
  • 2017-08-04 前端日报
  • css布局,左右固定中间自适应实现
  • Gradle 5.0 正式版发布
  • Java的Interrupt与线程中断
  • js如何打印object对象
  • npx命令介绍
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • QQ浏览器x5内核的兼容性问题
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SQLServer之创建显式事务
  • 从重复到重用
  • 分布式任务队列Celery
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 盘点那些不知名却常用的 Git 操作
  • 源码安装memcached和php memcache扩展
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​Spring Boot 分片上传文件
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​业务双活的数据切换思路设计(下)
  • #vue3 实现前端下载excel文件模板功能
  • %check_box% in rails :coditions={:has_many , :through}
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (AngularJS)Angular 控制器之间通信初探
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (三)终结任务
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)汇编语言——简单程序
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)我也是一只IT小小鸟
  • .naturalWidth 和naturalHeight属性,
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 设计模式初探
  • .net解析传过来的xml_DOM4J解析XML文件