处理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捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何高效的阅读hadoop源代码?
这篇文章的内容是从知乎的帖子上摘抄下来的,是董西成的经验之作,虽然我还没有来的及通读源码,但觉得这经验有些意义就转载来与大家共享。 ============ 首先,不得不说,hadoop发展到现在这个阶段,代码已经变得非常庞大臃肿,如果你直接阅读最新版本的源代码,难度比较大,需要足够的耐心和时间,所以,如果你觉得认真一次,认真阅读一次hadoop源代码,一定要有足够的心理准备和时间预期。 其次,需要注意,阅读Hadoop源代码的效率,因人而异,如果你有足够的分布式系统知识储备,看过类似的系统,则能够很快地读它的源代码进行通读,并快速切入你最关注的局部细节,比如你之前看过某个分布式数据库的源代码,对分布式系统的网络通信模块,调度模块等有一定了解,这对阅读hadoop源代码有极大帮助;如果你是一个初学者,对hadoop一无所知,只了解一些java语法,那阅读hadoop源代码是极具挑战的一件事情,尤其是从无到开始入门的过程,是极度煎熬和困惑的,这时候需要你在阅读代码过程中,不断补充缺乏的相关知识(比如RPC,NIO,设计模式等),循序渐进,直到入门。 接下来进入主题,说一下阅读源代码的个人...
- 下一篇
hadoop 2.6伪分布安装
hadoop 2.6的“伪”分式安装与“全”分式安装相比,大部分操作是相同的,主要区别在于不用配置slaves文件,而且其它xxx-core.xml里的参数很多也可以省略,下面是几个关键的配置: (安装JDK、创建用户、设置SSH免密码 这些准备工作,大家可参考hadoop 2.6全分布安装 一文,以下所有配置文件,均在$HADOOP_HOME/etc/hadoop目录下) 另外,如果之前用 yum install hadoop安装过低版本的hadoop,请先卸载干净(即:yum remove hadoop) 一、修改hadoop-env.sh 主要是设置JAVA_HOME的路径,另外按官网说法还要添加一个HADOOP_PREFIX的导出变量,参考下面的内容: export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64export HADOOP_PREFIX=/home/hadoop/hadoop-2.6.0 二、修改core-site.xml 1 <configuration> 2 <prope...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装