Spring、Mybatis 结合 Hadoop
来源:互联网 发布:太平天国失败 知乎 编辑:程序博客网 时间:2024/06/06 02:32
今天想在hadoop的项目里顺便把输出文件也整理了,写入数据库,就想着能不能整合进spring。一般来说,只要被spring框架整合的框架有扩展创建对象的接口都可以,可是,我刚接触hadoop,还不是很了解。就上spring官网查一下,结果没查到,看来hadoop应该不能像mybatis那样被spring接管了。
那么,不能整合,结合总可以吧。我把hadoop当成一个工具包,它只要负责处理数据就行。不过hadoop主要用于数据处理,适合分布式应用,结合spring,意味着只把hadoop当成一个辅助功能来用,所以专业的海量数据处理,项目还是采用分布式hadoop好,我这里纯属偷懒,节省代码,才结合spring,放在同一个项目中。
原理如下图所示:
项目结构如图:
注意点
- dao层和service层都跟ssm的一样
@Service("testService")public class TestServiceImpl implements TestService { @Resource TestMapper testDao;}
- 业务逻辑的处理在action层,包含spring和hadoop,要使用spring的bean,得先初始化
@Controllerpublic class DataDealing { //加载 spring 文件 static final ApplicationContext ctx = new FileSystemXmlApplicationContext( "classpath:spring-mybatis.xml"); public static void main(String[] args) { TestService as = (TestService )ctx.getBean("testService "); ... } }
- 能用hadoop处理的文件应该比较大,输出的结果文件也很大,java去读取输出文件的结果时,也要考虑效率,这里用nio 替代io
//读取文件 public static List<String> readApp(String file) { List<String> list = new ArrayList<String>(); try { list = Files.readAllLines(Paths.get(file), Charset.defaultCharset()); } catch (IOException e) { e.printStackTrace(); } return list; }
- 至于hadoop的引入和使用,可以看看我上一篇文章:http://blog.csdn.net/change_on/article/details/78856751
阅读全文